Htaccess Два разных перенаправления - PullRequest
0 голосов
/ 01 декабря 2008

У меня есть существующий htaccess, который отлично работает:

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule (.*) /default.php 
DirectoryIndex index.php /default.php

Я хочу изменить это так, чтобы все URL-адреса, начинающиеся с / test /, переходили в /test/default.php, , сохраняя все остальные URL-адреса с существующим /default.php.

Пример: http://www.x.com/hello.php -> http://www.x.com/default.php Пример: http://www.x.com/test/hello.php -> http://www.x.com/test/default.php

Ответы [ 5 ]

1 голос
/ 01 декабря 2008

Поместите правило для / test / in перед правилом для всего остального, но присвойте ему флаг [L], чтобы остановить обработку правила перезаписи, если оно совпадает.

0 голосов
/ 24 июня 2009

В вашей основной папке используйте следующий .htaccess

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule .* default.php [L]
DirectoryIndex index.php default.php

В вашей папке ./test/ (я предполагаю, что это физическая папка) , скопируйте и вставьте тот же .htaccess файл.

Во-первых, вам не нужно было / в начале дефолта. Apache всегда будет предполагать, что ищет в том же каталоге, где находится файл .htaccess.

Во-вторых, Apache смотрит назад, когда ищет файл .htaccess. Таким образом, все в ./test/.htaccess будет перезаписывать то, что написано в ./.htaccess.

0 голосов
/ 24 июня 2009

Попробуйте это.

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d

RewriteRule /test/.* /test/default.php 
RewriteRule .* /default.php 

DirectoryIndex index.php /default.php

Вам также не нужны (), потому что вы не устанавливаете значение в качестве переменной.

0 голосов
/ 01 декабря 2008

Это должно работать:

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule (test/)?(.*) $1default.php [L]
DirectoryIndex index.php /default.php
0 голосов
/ 01 декабря 2008

Попробуйте это

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule (/test/)?(.*) $1/default.php 
DirectoryIndex index.php /default.php
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...