У меня следующая проблема. Мы использовали много разных URL на одной странице. Теперь мы хотим использовать только один URL для этих страниц. Вот пример:
RewriteRule ^(subfolder1/folder1/|(subfolder2|subfolder3)/folder2/|folder3/)?(name1|name2|name3|name4)$ scriptname.php [QSA,NC]
Как видите, это довольно грязно. Теперь я хочу сделать следующее: переписать все URL-адреса только на один из этих URL-адресов (например, subfolder1 / folder1 / name1), используя 301, а затем переписать этот URL-адрес, чтобы обратиться к реальному сценарию. Это может выглядеть так:
RewriteRule ^((subfolder2|subfolder3)/folder2/|folder3/)?(name2|name3|name4)$ /subfolder1/folder1/name1 [R=301,QSA,NC]
RewriteRule ^subfolder1/folder1/name1$ script.php [QSA.NC]
Пока у меня нет проблем. Но теперь наступает сложная часть. Мы используем несколько машин для разработки на машинах UNIX и Windows. Все они имеют разные имена хостов и папки. Вот несколько примеров:
http://www.example.com (production)
http://test.example.com (testing)
http://localhost/development_folder/ (development WIN)
http://localhost:8888/development_folder/ (development MAC)
Проблема в том, что, поскольку у нас есть подпапки на машинах разработки, я не могу использовать абсолютный URL-адрес как /subfolder1/folder1/name1/
, как, например, укажите http://localhost/subfolder1/folder1/name1/
, а не http://localhost/development_folder/subfolder1/folder1/name1/
, поэтому все переписывания будут нарушены на машинах разработки.
Есть ли шанс, что эта проблема заработает? Поскольку папка development_folder
одинакова на всех машинах разработки, будет ли она полезна для исключения / включения этой папки в последующие записи, как показано ниже:
RewriteRule ^((subfolder2|subfolder3)/folder2/|folder3/)?(name2|name3|name4)$ /development_folder/subfolder1/folder1/name1 [R=301,QSA,NC]
RewriteRule ^development_folder/(.*)$ $1 [QSA.NC]
RewriteRule ^subfolder1/folder1/name1$ script.php [QSA.NC]
Или есть лучший способ сделать это? Любой намек очень поможет.