3

.htaccess ファイルを使用した URL のリダイレクトに問題があります。これは私の .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

問題は、 page: に移動すると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」を url に追加します。なぜこれが起こっているのか、それを修正する方法を知っている人はいますか?

4

1 に答える 1

3

問題は、mod_aliasリダイレクト ルールとmod_rewrite. 解決策は、1 つに固執することです。これは、純粋な 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. 「 RewriteRule 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
于 2008-11-12T01:00:31.533 に答える