【问题标题】:SEO Friendly URLs Not Working [closed]SEO友好的URL不起作用[关闭]
【发布时间】:2012-12-20 04:26:28
【问题描述】:

我正在尝试为我的网站设置 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

谁能说明需要更换或添加的床?

【问题讨论】:

  • 您能否进一步解释您想要什么,因为根据您的描述,正在发生的事情正是您想要发生的事情:在这两种情况下,传入的 URL 都映射到 http://mywebsite.com/m_link1.php。我猜你的意思是映射的 URL 显示在地址栏中,并且你期望一个静默重定向 ¿ 我是对的吗?另一方面,从您的规则看来,链接 1、链接 2 等是 fixed 字符串要在规则中硬编码¿为什么?如果它们始终处于相同的位置,它们可能是动态的。
  • 为了简单起见,我基本上希望http://mywebsite.com/link1 显示http://mywebsite.com/m_link1.php - 我用于此重定向的所有文件都以m_ 开头。如果有更简单的方法来做我正在尝试的事情,那么它也可以,我无论如何都不是专业编码人员,所以会接受任何建议/答案。
  • @user1850695 - 请不要修改问题来创建新问题。使用此页面右上角的“”链接。

标签: .htaccess mod-rewrite rewrite seo


【解决方案1】:

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

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

(注意:# cmets 删除这些行,因此它们不做任何事情)

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]

【讨论】:

  • 我只是尝试将[R=301] 更改为[L],正如该问题所暗示的那样,它没有用。
  • 如果您只更改该行,我认为这不会做任何事情,我认为它只会将其重定向到自身(如果发生这种情况,请更改域)。你能用当前的 htaccess 更新你的问题吗?
  • 没问题,刚刚更新。
  • 我认为您不需要 2 L 规则,因为那现在正在跳过您的最后一条规则。尝试删除中间的 RewriteRule 行,我 认为 应该这样做。编辑 - 哦,从之前的 RewriteRule 中删除 L 标志
  • 试过了,但 URL 仍然显示为 mywebsite.com/m_link1.php,所以我刚刚将问题 .htaccess 更新回原来的样子。
猜你喜欢
  • 2011-04-02
  • 2014-01-25
  • 2016-01-18
  • 2014-07-09
  • 1970-01-01
  • 1970-01-01
  • 2012-03-03
  • 2011-07-15
  • 1970-01-01
相关资源
最近更新 更多