我有.HTACCESS文件,有几个重写规则,以提供SEO友好的URL。由于某种原因,两个没有按预期工作。我已经在多个浏览器中进行了验证,认为可能有一个浏览器在.HTACCESS更改之前记住了服务器响应。
以下是我文件的全部内容:
Options +ExecCGI
RewriteEngine on
RewriteRule ^sign-up/?$ signup.php
RewriteRule ^features/?$ features.php
RewriteRule ^contact/?$ contact.php
RewriteRule ^about/?$ about.php
RewriteRule ^how-it-works/?$ how-it-works.php
RewriteRule ^client-pricing/?$ pricing.php
RewriteRule ^login/?$ admin.php
两个单字网址(/about/
和/contact/
)会导致404错误。所有其他网址都有效。奇怪的是,另一个单字网址(/login/
)正在工作。
我已经确认服务器上存在PHP文件。我可以访问www.domain.com/about.php并加载正常。但www.domain.com/about/和www.domain.com/about都返回404。
我很难过......感谢任何见解。
答案 0 :(得分:1)
尝试启用重写日志记录以查看mod_rewrite正在执行的操作。但是你必须在你的服务器/ vhost配置中执行此操作,而不是在htaccess文件中执行此操作:
RewriteLog /tmp/rewrite.log
RewriteLogLevel 5
您的规则没有任何问题,但这两个规则是唯一一个请求(例如/contact
)完全匹配扩展名为php文件的规则。因此,它似乎与多视图相关:
Options -Multiviews