SEO友好的URL不起作用

时间:2013-01-06 03:43:41

标签: .htaccess mod-rewrite rewrite seo

我正在尝试为我的网站设置SEO友好的URL,但似乎无法让它们工作。这是我的htaccess的代码:

Options +FollowSymLinks
RewriteEngine On

deny from all
allow from 46.763.65.235

RewriteCond %{HTTP_HOST} ^www\.mywebsite\.com
RewriteRule ^(.*)$ http://mywebsite.com/$1 [R=301,L]

RewriteRule ^(link1|link2|link3|link4)$ http://mywebsite.com/$1/ [R=301]

RewriteRule ^(link1|link2|link3|link4)/(.*)$ http://mywebsite.com/m_$1.php/$2 [L]

基本上,当转到http://mywebsite.com/link1时,它应显示http://mywebsite.com/m_link1.php

的内容

然而,现在发生的事情是我转到http://mywebsite.com/link1,它只是重定向到http://mywebsite.com/m_link1.php

任何人都可以证明需要改变或添加的东西吗?

1 个答案:

答案 0 :(得分:1)

this question。您正在使用导致重定向的R标志。如果没有该标志,它将执行内部重定向(不会导致浏览器发出另一个请求)。

更新:我认为问题是尝试重定向到另一个网址,假设“mywebsite.com”是您网址的占位符。在这种情况下,你确实需要[L]标志,以便任何规则匹配的是[L] ast将会起作用。这对我很好:

(注意:#注释掉这些行,这样他们什么都没做)

Options +FollowSymLinks
RewriteEngine On

#deny from all
#allow from 46.763.65.235

#RewriteCond %{HTTP_HOST} ^www\.mywebsite\.com
#RewriteRule ^(.*)$ http://mywebsite.com/$1 [R=301,L]

#RewriteRule ^(link1|link2|link3|link4)$ http://mywebsite.com/$1/ [R=301]

#one rule for /link1 or /link2 etc
RewriteRule ^(link1|link2|link3|link4)$ m_$1.php [L]
#another rule for /link1/foo or /link2/something-else
RewriteRule ^(link1|link2|link3|link4)/(.*)$ m_$1.php/$2 [L]