mod_rewrite из базы домена - PullRequest
       30

mod_rewrite из базы домена

0 голосов
/ 14 октября 2011

Я не уверен, возможно ли это, но я хочу использовать mod_rewrite так:

http://abc.com/something => http://abc.com/script.php?q=something

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

Options +FollowSymLinks
RewriteEngine on
RewriteRule /(.*)$ /script.php?q=$1

Можно ли это сделать?

Изменить: Я должен отметить, что mod_rewrite работает нормально, когда я использую это, например:

Options +FollowSymLinks
RewriteEngine on
RewriteRule script/(.*)$ /script.php?q=$1

Редактировать еще раз: http://emailsms.me/redirect.php?id=abc

Используя это:

RewriteEngine on
RewriteRule ^([A-z]{1,})$ /redirect.php?q=$1

Таким образом, теоретически http://emailsms.me/abc должен выводить abc (все, что он делает, это отображает ввод в данный момент). но вместо этого я получаю ошибку 404.

Обновление : Кажется, что здесь возникает проблема с Options + FollowSymLinks. Если я закомментирую это, я получаю ошибку 404, но когда она появляется и я помещаю что-либо (я имею в виду что-либо, даже #), я получаю эту ошибку в моих журналах:

[Fri Oct 14 02:20:26 2011] [alert] [client 1.2.3.4] /home/me/redirects/.htaccess: Illegal option #

Ответы [ 3 ]

1 голос
/ 14 октября 2011

Похоже, вы делаете это из .htaccess, а не из конфигурации vhost. В этом случае вы должны потерять первый / в вашем RewriteRule.

1 голос
/ 14 октября 2011

Попробуйте это:

Options +FollowSymLinks
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /script.php?q=$1 [L,QSA]

Возможно, вы не хотите использовать косую черту в правиле перезаписи, и вам нужно проверить, что запрошенный файл не существует (2 строки RewriteCond), иначеВы получите ошибку 500 Server, потому что циклы перезаписи (/script.php ВСЕГДА совпадут с ^ (. *) $ и будут перезаписаны заново).Обратите внимание, что если у вас нет файла /script.php, вы получите ошибку 500, потому что перезапись будет зациклена.

0 голосов
/ 14 октября 2011

Вы можете попробовать что-то вроде:

RewriteEngine on
RewriteRule ^([A-z]{1,})$ /script.php?q=$1

Он падает с (. *), Как вы можете видеть

...