Как перенаправить myurl.com/targeturl.com на myurl.com/?site=targeturl (PHP / Apache / Linux)? - PullRequest
0 голосов
/ 26 января 2010

Я пишу веб-сайт, который позволяет людям оценивать читаемость веб-страницы (Flesch-Kincaid Reading Ease, спасибо за такие вещи).

В идеале я бы хотел, чтобы пользователь мог просто предшествовать целевому URL вместе с моим (как это делают многие зеркальные сайты), и эй, прежде чем они смогут увидеть результаты.

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

Как бы я сказал:

, если запрос mysite.com/anything-at-all).

перенаправить на mysite.com/?site=anything-at-all

За исключением случаев, когда запрос направлен на:

  • только для mysite.com/

  • Запрос на mysite.com/ajaxresponse.php?target=something

  • Где запрос для about.php или loading.gif

К сожалению, все, что я до сих пор пробовал, заканчивается циклом перенаправления ...

Большое спасибо,

Jack

Ответы [ 2 ]

1 голос
/ 26 января 2010

Отредактируйте .htaccess, чтобы иметь:

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^(.+)$ ?site=$1 [NC]

+ в регулярном выражении позаботится о том, чтобы страница индекса оставалась как есть. Отредактируйте иначе, если сочтете нужным (сделайте это постоянным перенаправлением 302 и т. Д.)

Для исключения определенных страниц необходимо добавить строку:

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^(ajax\.php|whatever\.gif) - [L]
RewriteRule ^(.+)$ ?site=$1 [NC]
0 голосов
/ 26 января 2010

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

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{QUERY_STRING} !(^|&)site=[^&]
RewriteRule .+ /?site=$0 [QSA]

Первое условие - исключить запросы к существующим файлам, а второе - избежать перенаправления, если уже есть site URL-аргумент.

...