漂亮的网址没有重定向,htaccess

时间:2016-03-09 13:43:01

标签: php apache .htaccess redirect mod-rewrite

我对htaccess很新。我已成功创建.htaccess文件,其中包含以下规则,可以使用漂亮的网址重定向用户。

我的实际网址

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. 没有发生漂亮网址的重定向。我很遗憾看到旧网址
  2. 当我直接在地址栏中输入漂亮的网址时使用提到的htaccess,然后页面显示正常,但网址会自动更改为我当前的网址。
  3. 任何想法我在这里做错了什么。

2 个答案:

答案 0 :(得分:2)

请尝试使用以下/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。请记住在测试之前清除缓存,否则您的浏览器可能会根据历史缓存重定向。

答案 1 :(得分:0)

改变这个:
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重定向。