【问题标题】:Pretty url not redirecting, htaccess漂亮的网址没有重定向,htaccess
【发布时间】:2016-06-23 22:16:01
【问题描述】:

我对 htaccess 很陌生。我已成功创建具有以下规则的 .htaccess 文件,以使用漂亮的 url 重定向用户。

我的实际网址

http://localhost/domain.com/Job-Details.php?Job_ID=30

我想要达到的目标

http://localhost/domain.com/30

我当前的 htaccess

RewriteEngine On
RewriteBase /domain.com/

# Get the URI-path directly from THE_REQUEST variable
  RewriteCond %{THE_REQUEST} ^(GET|HEAD)\s/(.*)\.php [NC]

# Search friendly URLs for job detail page 
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^([0-9]+)$ Job-Details.php?Job_ID=$1 [NC,L,R=301]

我面临的问题

  1. 没有发生漂亮 url 的重定向。我仍然看到旧网址
  2. 当我直接在地址栏中输入漂亮的 url 时使用提到的 htaccess,页面显示正常,但 url 会自动更改为我当前的 url。

知道我在这里做错了什么。

【问题讨论】:

  • 第一个条件似乎缺少规则。这样的规则需要将旧的 URI 重定向到新的 URI。然后第二批将新旧重写。另外,您需要从第二批的规则中删除R=301
  • 是的,我在第一个条件和 RewriteRule 之上添加了 RewriteCond %{THE_REQUEST} \Job-Details.php?Job_ID=([0-9]+) [NC] 。 Job-Details.php [L] 在两个提到的条件之后。然后重新启动服务器停止 url 更改为旧的。但是重定向到新的漂亮 url 仍然是一个问题。

标签: php apache .htaccess redirect mod-rewrite


【解决方案1】:

请尝试使用以下/domain.com/.htaccess 代码:

RewriteEngine On
RewriteBase /domain.com/

# Redirect actual URI to SEF URI
RewriteCond %{THE_REQUEST} (?:GET|HEAD)\s\/domain.com\/Job\-Details\.php\?Job_ID\=(\d+) [NC]
RewriteRule ^ %1? [R=302,L,NE]

# SEF URI for Job-Details page
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(\d+)$ Job-Details.php?Job_ID=$1 [NC,QSA,L]

如果您对结果满意,请将 R=302 更改为 R=301。请记住在测试之前清除缓存,否则您的浏览器可能会根据历史缓存重定向。

【讨论】:

  • 谢谢迈克。这按预期工作,是的,我又是一个快乐的人:-)
  • Mike - 它适用于某些 url 而有些则无效。有什么原因吗?
  • 那将是缓存问题。确保该站点已完全清除,以便一切正常运行。
  • 谢谢迈克,通过关闭一切并重新启动它来工作:-)
【解决方案2】:

改变这个:
RewriteRule ^([0-9]+)$ Job-Details.php?Job_ID=$1 [NC,L,R=301]

RewriteRule ^([0-9]+)$ Job-Details.php?Job_ID=$1 [L,QSA]

使用 R=301,您正在创建 301 重定向。

【讨论】:

  • 做了更改并重新启动了我的网络服务器,但仍然是同样的问题。
  • 尝试在htaccess开头添加Options +FollowSymLinks
  • 这能解决您的问题 #2 吗?
  • 不,还是同样的问题。再次重新启动服务器后添加选项 +FollowSymLinks 但没有结果。
猜你喜欢
  • 2015-10-04
  • 1970-01-01
  • 2012-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-10
  • 2012-06-05
  • 2012-06-08
相关资源
最近更新 更多