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

Php 重写将字符添加到重定向url的规则,php,apache,.htaccess,mod-rewrite,Php,Apache,.htaccess,Mod Rewrite,我正在尝试编写一组重写规则,但当更改被推送到服务器时,我没有得到预期的结果。我希望我可以安全地假设重写是可能的,因为在读取.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] 这在本地有效。然而,当在服务器上

我正在尝试编写一组重写规则,但当更改被推送到服务器时,我没有得到预期的结果。我希望我可以安全地假设重写是可能的,因为在读取.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]  
这在本地有效。然而,当在服务器上使用相同的规则时,我得到一个找不到的错误。在此服务器上找不到请求的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  
#拒绝访问实用程序文件
命令允许,拒绝
全盘否定
AddOutputFilterByType DEFLATE text/plain(以及html、css等的其他规则)#压缩
SetOutputFilter放气
选项-索引#禁用目录访问
我创建了这些规则,作为阅读示例和叠加提示和技巧的组合。我还禁用了-索引,没有引起任何更改

提前感谢您的帮助。

将规则更改为:

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
将规则更改为:

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

很棒。这在服务器上对我有效,但在本地不起作用。我遇到了一个未找到的URL,它试图在本地访问的URL是localhost:8888/(文件夹名称)/about/faq,它给了我一个“找不到about/about/php". 我是否可以添加规则以在本地和服务器上使用同一个文件?并且…RewriteCond对所有遵循它的RewriteRules都有效?否
RewriteCond
仅适用于它旁边的立即
RewriteRule
。正确的URL
localhost:8888/folder/about.php
localhost:8888/folder/about/about.php
?感谢您提供有关RewriteCond的信息。我将使用它来处理其余的URL。localhost:8888/folder/about/about.php是正确的。这在服务器上对我有效,但在本地无效。我遇到一个未找到的URL,它试图在本地访问的URL是localhost:8888/(文件夹名称)/about/faqs,它给了我一个“about/about/php未找到”。我是否可以添加规则以在本地和服务器上使用同一个文件?并且…RewriteCond对所有遵循它的RewriteRules都有效?否
RewriteCond
仅适用于它旁边的立即
RewriteRule
。正确的URL
localhost:8888/folder/about.php
localhost:8888/folder/about/about.php
?感谢您提供有关RewriteCond的信息。我将使用它来处理其余的URL。localhost:8888/folder/about/about.php是正确的。