Я пытаюсь перенаправить один подкаталог на другой, используя RewriteRule в основном каталоге.htaccess.
Например: http://website.com/subdir следует переписать на http://website.com/another_dir/destination_dir, но пользователь должен по-прежнему видеть http://website.com/subdir в адресной строке.
Это отлично работает, если пользователь заканчивает URL с завершающей косой чертой. Пример: http://website.com/subdir/ (Генерирует 200
Однако, если косая черта опущена, создается 301 переадресация, и мы видим нежелательный каталог назначения. Например, http://website/subdir перенаправляет пользователя на http://website/another_dir/destination_dir
Вот соответствующие разделы.htaccess:
# URL Rewriting:
RewriteEngine On
RewriteBase /
...
# Redirect subdirectories:
RewriteRule ^subdir(.*)$ another_dir/destination_dir$1 [PT,NC,QSA,L]
Любая помощь приветствуется!
Вы можете отрегулировать регулярное выражение в правиле rewrite для необязательного совпадения с косой чертой.
RewriteRule ^subdir(/?.*)$ another_dir/destination_dir$1 [PT,NC,QSA,L]
Обратите внимание на /?
сразу после subdir
. Это говорит о том, что может быть или не быть слэш сразу после вашего subdir, поэтому регулярное выражение будет соответствовать в любом случае.
Быстрое исправление будет
DirectorySlash OFF
в этом htaccess и DirectorySlash ON
.htaccess в another_dir/