htaccess: Mediafire.com, как URL - PullRequest
       0

htaccess: Mediafire.com, как URL

2 голосов
/ 02 сентября 2011

Я пытаюсь придумать какой-нибудь mod_rewrite для перевода http://example.com/?7gudznrxdnu в http://example.com/view.php?id=7gudznrxdnu

Но любая другая страница будет работать правильно, например, http://example.com/contact и т. Д.

Ответы [ 2 ]

2 голосов
/ 02 сентября 2011

Я думаю, что это будет работать:

RewriteEngine   On
RewriteCond   %{QUERY_STRING}     ^[a-z0-9]+$
RewriteRule   ^$                  view.php?id=%{QUERY_STRING}    [L]

Если вы хотите, чтобы перезапись отображалась в поле адреса браузера, вам придется заменить [L] на [L,R=301].

Объяснение: Строка запроса (то, что следует за знаком вопроса) не является частью URL, который RewriteRule видит в своем шаблоне сопоставления, поэтому вы не можете проверить наличие знака вопроса там. В моем решении я запускаю правило тогда и только тогда, когда (RewriteCond) строка запроса состоит только из a-z и / или 0-9, и мое правило переписывает только URL-адреса, заканчивающиеся косой чертой (за исключением строки запроса) , Я перенаправляю это на view.php?id=, а затем добавляю к нему строку запроса.

Редактировать: Протестировано на моем Apache-сервере, и я не нашел никаких ошибок (пока).

1 голос
/ 02 сентября 2011

Вы должны попробовать (в вашем .htaccess):

RewriteEngine On
RewriteRule ^\?([^/\.]+)?$ view.php?id=$1 [L]
...