好的,我已经在我的.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]
答案 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]
它描述了来自目的地的原始查询字符串。
在测试之前清除浏览器的缓存。