htaccess重写规则只能部分工作

时间:2015-04-25 13:53:30

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

我有一个基本的htaccess重写文件,但是当它与之前的规则类似时,我无法获得其中一条规则。

我的代码是;

RewriteEngine on

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

RewriteRule ^gallery$ gallery.php
RewriteRule ^about-us/page-1$ page-1.php
RewriteRule ^about-us/page-2$ page-2.php
RewriteRule ^about-us$ about-us.php

gallery,page-1和about-us都可以,但是第2页没有。

有没有办法让它发挥作用?

我尝试过不同的订单,如果将约 - 我们放在第一位,那么第1页或第2页都不起作用

注意:重定向会重定向到第2页但是包含的文件(css,js等)不会加载

2 个答案:

答案 0 :(得分:2)

试试这个:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /about-us/page-2$ 
RewriteRule .* page-2.php [NC,L]    
RewriteRule ^gallery$ gallery.php [NC,L]
RewriteRule ^about-us/page-1$ page-1.php [NC,L]
RewriteRule ^about-us$ about-us.php [NC,L] 

答案 1 :(得分:1)

为以下2行添加[L,NC,QSA]

RewriteRule ^about-us/page-1$ page-1.php
RewriteRule ^about-us/page-2$ page-2.php

因此修改后的.htacces看起来像这样

RewriteEngine on

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

RewriteRule ^gallery$ gallery.php
RewriteRule ^about-us/page-1$ page-1.php [L,NC,QSA]
RewriteRule ^about-us/page-2$ page-2.php [L,NC,QSA]
RewriteRule ^about-us$ about-us.php

正如Starkeen在评论中所说,对于css和js文件来处理重写的url 将以下代码添加到文档的头部。

<base href="yoursitename.com/">;