2008-11-11 57 views
3

我在使用.htaccess文件重定向URL时遇到问题。这就是我的.htaccess文件看起来像:.htaccess中的重定向规则将我带到错误的地方

Redirect 301 /file-name/example.php http://www.mysite.com/file-name/example-001.php 
Redirect 301 /section-name/example.php http://www.my-site.com/section-name/example-002.php 

RewriteEngine on 
RewriteCond %{HTTP_HOST} !^www.mysite.com$ [NC] 
RewriteRule ^(.*)$ http://www.mysite.com/$1 [L,R=301] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.+)/(.*)$ hqtemplates/articles.php?file_name=$2 [L] 
php_value session.use_only_cookies 1 
php_value session.use_trans_sid 0 

现在的问题是,当我转到页:www.my-site.com/file-name/example.php,而不是重定向我www.my-site.com/file-name/example-001.php它重定向我 www.my-site.com/file-name/example.php?file_name=example-001.php

出于某种原因,它将“?file_name = example-001.php”添加到网址。有谁知道这是为什么发生,以及如何解决它?

回答

3

问题是混合mod_alias重定向规则与mod_rewrite。解决方案是坚持一个。这是一个纯粹的mod_rewrite的唯一途径解决(我只包括了相关部分的问题):

RewriteEngine on 
# emulate specific mod_alias Redirect rules 
# 
# Flags explanation: 
# [L] = last rule, stop processing further rules 
# [R=301] = 301 Redirect 
# 
RewriteRule ^file-name/example.php$ http://www.mysite.com/file-name/example-001.php [L,R=301] 
RewriteRule ^section-name/example.php$ http://www.my-site.com/section-name/example-002.php [L,R=301] 

# handle other rewrite requests 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.+)/(.*)$ hqtemplates/articles.php?file_name=$2 [L] 

为所发生的事情在你的.htaccess,这里的重写日志:

(2) rewrite 'file-name/example.php' -> \ 
     'hqtemplates/articles.php?file_name=example.php' 
(2) strip document_root prefix: /home/test/hqtemplates/articles.php -> \ 
     /hqtemplates/articles.php 
(1) internal redirect with /hqtemplates/articles.php [INTERNAL REDIRECT] 
(1) pass through /home/test/Sites/file-name/example-001.php 

这表明:

  1. 申请mod_rewrite “重写规则^(+)/ $ hqtemplates ...(*)”
  2. file-name/example.php是相当于现在hqtemplates/articles.php?file_name=example.php
  3. 申请mod_alias “重定向301 ......”
  4. 显示最终file-name/example-001.php?file_name=example.php
+0

真棒!谢谢欧文。应该已经看到了。 :P – ocergynohtna 2008-11-12 23:53:29