2014-01-30 2 views
0

У меня есть сервер Apache с общим хостингом, и я пытаюсь отправить посетителей, которые попадают на главный доменный URL-адрес на определенную страницу, с URL-адресом и перенаправлением 303:Apache - перенаправить только URL-адрес домена на подстраницу

example.com 
example.com/ 

в

example.com/subdirectory/page.html 

только обычный URL домена должен попадет, а не:

example.com/page.html 
example.com/otherdirectory 
example.com/otherdirectory/ 
example.com/subdirectory 
example.com/subdirectory/ 
example.com/subdirectory/otherpage.html 
example.com/subdirectory/otherdirectory 
example.com/subdirectory/otherdirectory/ 
example.com/subdirectory/otherdirectory/page.html 

Я не уверен, что RewriteEngine разрешен на этом сервере, если возможны альтернативные подходы.

Грубый способ, о котором я думал, заключается в том, чтобы просто использовать DirectoryIndex для отправки посетителя example.com/index.php - и иметь перенаправление PHP в этом файле, куда я хочу. Но я не уверен, что это может вызвать видимую видимость для некоторых посетителей или как Google будет чувствовать это.

Я обнаружил другие экземпляры такого рода вопросов о переполнении стека, но ответы мне так или иначе не удается. Поскольку поведение не является интуитивным, тестирование перед публикацией может быть целесообразным.

Благодаря

+0

_ «Я «Не уверен, что RewriteEngine разрешен на этом сервере» - ну, тогда переходите к проверке, что сначала аза. _ «Поскольку поведение не является интуитивным, тестирование перед публикацией может быть целесообразным». - Да, правильно. Что-нибудь еще, что мы можем сделать для вас ...? – CBroe

+0

У меня сложилось впечатление, что некоторые разделяемые хостинга блокируют RewriteEngine, поскольку он может быть ресурсоемким - и этот ответ не только для меня, но и для других читателей будущего. В любом случае альтернативные подходы всегда интересны. – user3201867

+0

Пожалуйста, не стесняйтесь отвечать своим непроверенным синтаксисом, производящим рекурсивные циклы и отказываясь в подкаталогах - чтобы SO мог быть заполнен более бесполезными ответами «ребята, которые всегда имеют ответ на все», и думают, что SO - это соревнование, чтобы выиграть видеоигру точки. – user3201867

ответ

0

Если mod_rewrite не включен, то вы можете использовать mod_alias на основе правила, как это в вашем DocumentRoot/.htaccess:

RedirectMatch 303 ^/?$ /subdirectory/page.html 

UPDATE: Эквивалент правило mod_rewrite:

RewriteEngine On 

RewriteRule ^/?$ /subdirectory/page.html [L,R=303] 
+0

Спасибо anubhava - кажется, работает отлично! Считаете ли вы, что RedirectMatch предпочтительнее RewriteRule с точки зрения нагрузки на сервер - или вообще нет разницы? – user3201867

+0

На самом деле разница в производительности, но «RewriteRule» предоставляет больше возможностей для более сложных требований. – anubhava

+0

Также, если это удается, вы можете пометить ответ как принятый? – anubhava

Смежные вопросы