.htaccess没有采用重写规则

时间:2016-11-02 21:48:49

标签: php apache .htaccess mod-rewrite url-rewriting

我从我购买的系统中获取了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> 

我的修改版本如下:

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteBase /

RewriteRule ^city-([^/]+).html searcharea?city=$1&sd=ls [L]
RewriteRule ^city-normal-([^/]+).html searcharea?city=$1&sd=pb [L]
RewriteRule ^city-special-([^/]+).html searcharea?city=$1&sd=oeb [L]

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

Systems Base Home Link如下所示:

http://www.url.de/store/home

我的.htaccess完全被忽略了,我想知道为什么? 我想包括一个链接到系统的seo,并将其url reffer到该函数,但它不能与此htaccess一起使用。

我在另一个系统的另一个htaccess文件中有这个htaccess规则,并且它运行良好。

编辑:

从原始文件工作的规则,只是我的规则被忽略。 mod_rewrite已启用

我的结构:

/
/.htaccess
/index.php -> uses yiiframework to build pages
/core
/core/css
/core/js

2 个答案:

答案 0 :(得分:1)

这是因为您的orignal htaccess规则与新规则冲突,并且它们会将所有不存在的请求重写为index.php。要解决此问题,您需要重新排序规则。

尝试:

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteBase /

RewriteRule ^city-([^/]+).html searcharea?city=$1&sd=ls [L]
RewriteRule ^city-normal-([^/]+).html searcharea?city=$1&sd=pb [L]
RewriteRule ^city-special-([^/]+).html searcharea?city=$1&sd=oeb [L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]


</IfModule> 

答案 1 :(得分:0)

确保在服务器上的apache中启用了mod_rewrite。