Возможно ли иметь htaccess, если еще ввести условия перезаписи и правила перезаписи? - PullRequest
1 голос
/ 23 октября 2009

Я пытаюсь написать файл htaccess, который по сути делает это:

if(requested file == "some-file.php" || requested file == "some-file2.php" || requested file == "some-file3.php")
   then Rewrite to redirector.php?uri=some-file.php <- substitute requested file without passing any parameters
else
// existing rewrite conditions from silverstripe
RewriteCond %{REQUEST_URI} ^(.*)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* sapphire/main.php?url=%1&%{QUERY_STRING} [L]

Возможно ли это с помощью htaccess?

Ответы [ 3 ]

0 голосов
/ 23 октября 2009

Попробуйте это правило:

RewriteRule ^(some-file\.php|some-file2\.php|some-file3\.php)$ redirector.php?uri=$1
0 голосов
/ 18 ноября 2011

Это ваше решение:

# if files are know, redirect and stop:
RewriteRule ^(some-file|some-file2|some-file3)\.php$ redirector.php?uri=$1.php [QSA,L]

# files that were not known go here:
# existing rewrite conditions from silverstripe
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* sapphire/main.php?url=%1&%{QUERY_STRING} [L]

Нота: Я удалил:

RewriteCond %{REQUEST_URI} ^(.*)$

Что бесполезно. Если вы хотите проверить «не пустой», это должно было быть

RewriteCond %{REQUEST_URI} !^$

Olivier

0 голосов
/ 23 октября 2009

Я думаю, все, что вам нужно сделать, это поместить 3 уникальных запрошенных файла как 3 RewriteRule s вверху, над этими RewriteCond s:

RewriteEngine On
RewriteRule /(some-file.php) http://test.dev/redirector.php?uri=$1 [L]
RewriteRule /(some-file2.php) http://test.dev/redirector.php?uri=$1 [L]
RewriteRule /(some-file3.php) http://test.dev/redirector.php?uri=$1 [L]

// rest of Rewrite Stuff
...