Apache htaccess-将一条规则重写为另一条规则(虚拟文件夹)
我在根目录中有一个名为Apache htaccess-将一条规则重写为另一条规则(虚拟文件夹),apache,.htaccess,mod-rewrite,url-rewriting,Apache,.htaccess,Mod Rewrite,Url Rewriting,我在根目录中有一个名为propertyid.php的文件 我有一个正常工作的RerwiteRule: RewriteRule for sale/(*)propertyid.php?pid=$1 用户输入此URL,地址栏中将显示相同的URL domain.com/for sale/(pid) 我想要第二条规则,允许用户输入此url domain.com/sell/(pid) 但是我想在地址栏中显示第一个URL domain.com/for sale/(pid) 我尝试了以下的多种变体 Rewrit
propertyid.php的文件
我有一个正常工作的RerwiteRule
:
RewriteRule for sale/(*)propertyid.php?pid=$1
用户输入此URL,地址栏中将显示相同的URL
domain.com/for sale/(pid)
我想要第二条规则,允许用户输入此url
domain.com/sell/(pid)
但是我想在地址栏中显示第一个URL
domain.com/for sale/(pid)
我尝试了以下的多种变体
RewriteRule ^sell$ /for-sale/propertyid.php?pid=$1
RewriteRule sell/(.*) for-sale?pid=$1
您需要将/sell/(.*)
重定向到/for sale/(.*)
。将/for sale/(.*)
重定向到propertyid.php?pid=$1
的重定向规则将处理其余部分。
只需检查几件事:
/sell/(.*)
到/for sale/(.*)
规则应该在上面
/for sale/(.*)
到propertyid.php?pid=$1
重定向规则,应该
返回永久移动的301 http代码
检查多个重定向
您的.htaccess应该如下所示:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^sell(.*)$ http://%{HTTP_HOST}/for-sale$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^for-sale/(.*)$ propertyid.php?pid=$1 [L]
谢谢你的及时和完美的回复。我试着投赞成票,但我的分数不到15分(原来我之前的问题措辞很糟糕)。也许其他人可以投票支持这个答案。@thickguru-显然,我在前面的问题中的措辞做得不好。谢谢你编辑我的问题。我注意到您删除了我之前关于搜索答案的评论,并且似乎突出显示了代码元素。今后我将努力跟随你的脚步。如果您在以后的问题中还有什么可以指出的,我欢迎您的反馈。