你认为我很容易在S / O上找到答案,但是我已经尝试了所有的事情,经过几个小时的挫折之后我就放弃了并看到真正的专家们的想法。
我"确定"这可以通过mod重写来完成,但我会顺从你。
问题:我试图改变这样的网址...
http://domain.com/new-cars/state.php?stateCode=al
至少要进入这个......
http://domain.com/new-cars/al-new-cars
尽管如此,理想情况下我会让它看起来像这样(是的,我愿意重写一些代码以使用完整的州名作为$ stateCode变量来使它变得更容易!)...
http://domain.com/new-cars/alabama-new-cars
最终计划是能够在诸如......
之类的链接中使用URLhttp://domain.com/new-cars/alabama-new-cars
让.htaccess开车将这个SEO友好的URL与动态版本相关联并正确显示页面。
无论哪种方式,我都无法像我需要的那样弄清楚如何做到这一点。
这是我尝试过的。
Options +FollowSymlinks
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^new-cars/([^-]*)-new-cars/$ /new-cars/state.php?stateCode=$1 [L,QSA,NC]

我使用2种不同的mod重写生成器创建的不同变体以及对其他人的问题的各种答案。
绝对没有任何效果。
我希望当我去
http://domain.com/new-cars/state.php?stateCode=AL
它将URL重写为
http://domain.com/new-cars/AL-new-cars
......但事实并非如此。相反,它保持与我输入的完全相同的动态URL。如果我转到"期望"重写URL我收到404错误,说该页面不存在。
我做错了什么?
我想也许我的.htaccess权限没有设置正确,但我可以很容易地通过.htaccess进行301重定向,所以不是这样。
也许有人可以提供帮助。我已经尝试过这么多的排列,甚至只是为了找到最基本的重写,看看我是否可以让它发挥作用 - 但没有。
感谢任何帮助!
答案 0 :(得分:1)
您可以使用:
Options +FollowSymlinks
RewriteEngine on
RewriteBase /
# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} \s/+new-cars/state\.php\?stateCode=([^\s&]+) [NC]
RewriteRule ^ /new-cars/%1-new-cars? [R=301,L,NE]
# internal forward from pretty URL to actual one
RewriteRule ^new-cars/([^-]*)-new-cars/?$ /new-cars/state.php?stateCode=$1 [L,QSA,NC]