Я хотел бы сделать следующее:Является ли мой код mod-rewrite правильным?
Запрос:
http://www.mydomain.com/show/requested/path/here?some=var&some_other=var
Шоуда направляются
index.php?s=show/requested/path/here&some=var&some_other=var
(последние 3 строки моего кода, я думаю, они правильны, насколько я знаю)
если пользователь пытается t о отправить вар с именем "с" с помощью запроса GET он должен быть направлен на
index.php?s=error
т.е.
http://www.mydomain.com/show/requested/path/here?s=var
http://www.mydomain.com/show/requested/path/here?a=b&s=var
http://www.mydomain.com/show/requested/path/here?a=b&s=var&c=d
http://www.mydomain.com/show/requested/path/here?a=b&s
http://www.mydomain.com/show/requested/path/here?s
Мой вопрос: действительно ли следующий код? , похоже, соответствует 5 случаям. Но я не знаю, соответствует ли он другим случаям, которые он не должен. Моя цель состоит в том, чтобы не разрешать отправку var с именем «s» через запрос получения.
Содержание моего .htaccess:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^(.*)(\?|&)s=?(.*)$ [NC]
RewriteRule ^(.*)$ index.php?s=error [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?s=$1 [L,QSA]
Хммм, я получил очень серьезные результаты с вашим решением. Если я удалю R = 301, это сработает. Мой .htaccess не находится непосредственно в документе, как я объяснил, но я несколько ниже. Если я использую 301, он пытается перенаправить на абсолютный путь моего vm/var/www/..... – steven
Упс, у меня была опечатка в моем первом правиле, которое я сейчас исправил. Пожалуйста, попробуйте еще раз. – anubhava
теперь я могу переписать путь с помощью s = someting в get vars. – steven