htaccess: как перенаправить example.com/anything в скрипт example.com/seoparser.php?anything - PullRequest
1 голос
/ 23 июня 2011

Как перенаправить example.com/anything в сценарий example.com/seoparser.php?anything, используя .htaccess

Это не работает:

RewriteEngine on
RewriteRule (.*) http://example.com/seoparser.php?$1

из-за множественного перенаправления, которое заканчивается на адресе http://example.com/seoparser.php?seoparser.php

Ответы [ 2 ]

2 голосов
/ 23 июня 2011

Вы должны проверить, не переписано ли оно:

RewriteCond %{REQUEST_URI} !^seoparser\.php$ [NC]
RewriteRule ^/?(.*)$       /seoparser.php?$1 [L]
0 голосов
/ 23 июня 2011

Вы можете проверить, не является ли запрашиваемый ресурс файлом / каталогом, и только потом переписать. Например:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /seoparser.php?$1 [QSA,L]

В зависимости от обстоятельств (какая логика перезаписи у вас есть / должна быть реализована), это может быть гораздо лучшим решением, чем упомянуто @inti. Вы увидите такую ​​комбинацию правил, используемых во многих реальных приложениях (например, WordPress, Magento) и PHP-фреймворках (в большинстве случаев они будут иметь только внутреннюю логику маршрутизации).

Это немного другой подход (в основном с организационной точки зрения):

RewriteEngine On
# Do not do anything for already existing files
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .+ - [L]

# Your rewrite rules (file/folder does not exist, we may need to route it elsewhere)
RewriteRule (.*) /seoparser.php?$1 [QSA,L]
...