htaccess RewriteCond并不总是有效

时间:2016-01-29 08:09:32

标签: linux .htaccess

我在Linux网络服务器上遇到问题。

基本上我有以下htaccess代码:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

工作正常,所以如果我去www.mydomain.com/blablablajrehkhsg,它会显示www.mydomain.com/index.php页面。

但它并不总是奏效。例如,在www.mydomain.com/specific-uri这样的特定URI上,我找不到404页面错误。

我甚至试图在我的htaccess中添加以下行

RewriteCond %{REQUEST_URI} ^/specific-uri

所以htaccess成为:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/specific-uri
RewriteRule . /index.php [L]
</IfModule>

但它仍然不会显示在index.php页面上。

请帮助,我不知道它可能是什么。

感谢

1 个答案:

答案 0 :(得分:1)

好吧,我解决了这个问题。

基本上在root上有一个名为specific-uri.php的页面,该页面存在冲突。通常是:

RewriteCond %{REQUEST_FILENAME} !-f

条件会解决这个问题,但我认为apache在htaccess条件之前将/ specific-uri转换为特定的uri.php。

所以我补充说:

Options -MultiViews

在htaccess中的条件之前,我相信它告诉apache停止从uri中寻找类似的内容。

现在我可以看到/ specific-uri和具体的uri.php。