.htaccess RewriteEngine每个URL

时间:2015-10-21 19:57:37

标签: php apache .htaccess mod-rewrite

我希望.htaccess将每个文件/目录发送到我的index.php。到目前为止我有这个:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteCond %{REQUEST_FILENAME} -d 

RewriteRule ^(.*)$ index.php?urlparam=$1 [NC,L] 


但如果目录存在,则此错误会在mysite.com/foobar上出现:

  

禁止

     

您无权访问此文档。

如果不是:

  

未找到

     

在此服务器上找不到请求的文档。 (404)

1 个答案:

答案 0 :(得分:1)

同时拥有!-f-f条件是没有意义的。这基本上是在说:

  

如果请求与现有文件不匹配,请执行此重写规则,并且请求也与现有文件匹配。

显然,你不能同时拥有这两者。

你想要的只是:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^(.*)$ index.php?urlparam=$1 [NC,L]