【问题标题】:htaccess rewrite rule only partially workshtaccess 重写规则仅部分有效
【发布时间】:2015-04-25 13:53:29
【问题描述】:

我有一个基本的 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 都可以,但是 page-2 不行。

有没有办法让它工作?

我尝试了不同的顺序,如果 about-us 放在第一位,page-1 或 page-2 都不起作用

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

【问题讨论】:

  • 不确定是否是问题所在,但请注意,您的重写条件仅适用于第一条规则。如果它们应该适用于每个规则,您需要在每条规则之前重复它们。
  • 要使 css 和 js 文件在重写后的 url 上工作,您需要在文档的头部添加一个基本 href,example.com"> 了解更多信息,请参阅此stackoverflow.com/questions/29739024/…
  • 谢谢@Starkeen - 我忘记了第 2 页的这行代码,但已将其包含在第 1 页中
  • @Gunaseelan 在我添加了基本 href 标签后,您的解决方案也有效

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


【解决方案1】:

试试这个:

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] 

【讨论】:

  • 不幸的是,这也没有改变结果。
  • 感谢您的第二次尝试,但它仍然对我不起作用
【解决方案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/">;

【讨论】:

  • 不幸的是,这并不能解决我的问题 - 我在上面添加了一条注释以进一步解释我的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-10
  • 1970-01-01
  • 2011-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多