我正在尝试使用一组RewriteRules,但是我没有得到将更改推送到服务器时的结果。我希望我可以安全地假设重写是可能的,因为我在读取.htaccess文件时没有收到服务器错误。
我遇到的问题的一个例子:
# (site)/about/faqs should link to about/about.php?p=faqs with this rule:
RewriteRule ^about/faqs/?$ about/about.php?p=faqs [NC,L]
这适用于本地。但是,当在服务器上使用相同的规则时,我会收到Not Found错误。 “在此服务器上找不到请求的网址/h/s(site)/public/about/about.php”。
我认为在主机端发生映射导致/ public /被添加到URL但我承认对此不太了解。我关心的是/ h / s和公众。
此外,服务器上还有其他规则:
<Files (filename)> # deny access to a utility file
Order allow, deny
Deny from all
</Files>
AddOutputFilterByType DEFLATE text/plain (and other rules for html, css, etc) #Compression
<files *.html>
SetOutputFilter DEFLATE
</files>
Options -Indexes # disable directory access
我创建了这些规则作为阅读示例和堆栈的组合提示和提示。我也禁用了-Indexes,它没有引起任何变化。
提前感谢您的帮助。
答案 0 :(得分:1)
将您的规则更改为:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(about)/(faqs)/?$ /$1/about.php?p=$2 [NC,L,QSA]
在您的情况下,重写规则会额外添加/about
以生成URI /h/s(site)/public/about/about.php