Хитрый URL переписать, регулярное выражение .htaccess - PullRequest
1 голос
/ 05 июня 2009

У меня сложная проблема с внутренним перенаправлением некоторых URL для моего сайта.

Ситуация такова, у меня в настоящее время есть URL-адрес типа example.com/check/youtube.com, который внутренне перенаправляет на check.php?domain=youtube.com, используя следующий код mod_rewrite:

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,NC,L]

RewriteRule ^offline offline.php [NC,L]
RewriteRule ^error error.php [NC,L]

RewriteRule ^check/(.*)$ check.php?domain=$1 [NC,L]

Однако я также хотел бы иметь возможность перенаправить на check.php, используя URL-адрес, такой как example.com/youtube.com. К сожалению, мне просто непонятно.

У меня есть каталог /assets/ со всеми CSS, JS и т. Д., Которые не должны быть затронуты.

Спасибо

Ответы [ 2 ]

2 голосов
/ 05 июня 2009

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

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^[^/.]+\.[^/]+$ check.php?domain=$0 [L]

Это правило переписывает любой запрос с URL-путем в форме [^/.]+\.[^/]+ (строка, содержащая хотя бы одну точку, но без косой черты), которую нельзя сопоставить существующему файлу с check.php.

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

Если вы хотите перенаправить «example.com/youtube.com», значит ли это, что вы хотите перенаправить почти все? Что конкретно разрешено передавать, например мне разрешили бы передать "example.com/youtube.com/foobar.php" для перенаправления в check.php?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...