1

我正在尝试处理一组 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 错误。“在此服务器上找不到请求的 url /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,它没有引起任何变化。

预先感谢您的任何帮助。

4

1 回答 1

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

于 2013-10-18T18:04:24.730 回答