2008-11-11 56 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