Mod Rewrite(SEO友情网址' s)

时间:2017-01-31 07:03:20

标签: apache .htaccess mod-rewrite url-rewriting

你认为我很容易在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

最终计划是能够在诸如......

之类的链接中使用URL
http://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重定向,所以不是这样。

也许有人可以提供帮助。我已经尝试过这么多的排列,甚至只是为了找到最基本的重写,看看我是否可以让它发挥作用 - 但没有。

感谢任何帮助!

1 个答案:

答案 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]