重写规则将字符添加到重定向的 url


RewriteRule adding characters to redirected url

>我正在尝试处理一组重写规则,但是当更改推送到服务器时,我没有得到预期的结果。我希望我可以安全地假设重写是可能的,因为在读取 .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]  

这在本地有效。但是,在服务器上使用相同的规则时,我收到"找不到"错误。在此服务器上找不到请求的网址/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  

我创建了这些规则,作为阅读示例的组合,并堆叠提示和技巧。我也禁用了 -索引,它没有引起任何变化。

提前感谢您的任何帮助。

将规则更改为:

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