htaccess多个URL变量清理URL

时间:2016-02-16 04:02:14

标签: php apache .htaccess url mod-rewrite

好的,我已经在我的.htaccess文件上尝试了多个版本的代码,我仍然无法让它正常工作...我不知道我是不是把它放了在错误的文件夹或正在发生的事情但是,这是我想要完成的事情。

这是我的代码

RewriteEngine On
RewriteBase /rentals/

RewriteCond %{THE_REQUEST} /index\.php\?zipcode=([^\s&]+)&location=([a-z0-9]+) [NC]
RewriteRule ^ %1/%2/ [R=301,L,NE]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([a-z0-9]+)/?$ index.php?zipcode=$1&location=$2 [L,QSA,NC]

这是我尝试过的另一个版本

RewriteEngine On
RewriteBase /rentals/
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+index\.php\?zipcode=([a-z0-9]+)&location=([a-z0-9]+) [NC]
RewriteRule ^ %1/%2/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z0-9]+)/([a-z0-9]+)/?$ /index.php?zipcode=$1&location=$2 [QSA,L,NC]

以下是我试图完成的内容......一个如下所示的网址: example.com/rentals/32746/florida

" 32746"和佛罗里达"来自网站索引页面上的表单,然后将其传递给" rental"文件夹通过URL。

.htaccess代码sorta可以工作,而它会吐出这样的URL: http://www.example.com/rentals/12345/arkansas?zipcode=12345&location=arkansas

但是你看到了尾部的额外部分吗?它好像在重复URL中的结果一样。

我目前在我的" 租借"中有.htaccess文件。文件夹应该在根文件夹中吗?

<小时/> 更新版本

对于那些和我一样遇到同样问题的人......这是我最终的实际代码:

RewriteEngine On
RewriteBase /rentals/

RewriteCond %{THE_REQUEST} /index\.php\?zipcode=([^\s&]+)&location=([a-z0-9]+) [NC]
RewriteRule ^ %1/%2/? [R=301,L,NE]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/?$ index.php?zipcode=$1&location=$2 [L,QSA,NC]

1 个答案:

答案 0 :(得分:4)

您需要在第一个规则的目标路径末尾添加

RewriteEngine On
RewriteBase /rentals/
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+index\.php\?zipcode=([a-z0-9]+)&location=([a-z0-9]+) [NC]
RewriteRule ^ %1/%2/? [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z0-9]+)/([a-z0-9]+)/?$ /index.php?zipcode=$1&location=$2 [QSA,L,NC]

它描述了来自目的地的原始查询字符串。

在测试之前清除浏览器的缓存。