проблема в смешении 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
, что предполагает:
- apply
mod_rewrite
"RewriteRule ^ (. +) / (. *) $ Hqtemplates ..."
file-name/example.php
теперь эквивалентно hqtemplates/articles.php?file_name=example.php
- применить
mod_alias
"Перенаправление 301 ..."
- Показать финал
file-name/example-001.php?file_name=example.php