В моем .htaccess у меня есть правила перезаписи, которые считывают значения с чистого выглядящего URL.
Мне нужно отправить все (тщеславные) URL-адреса на request.php
, кроме URL-адреса с этим путем: /change-email/[number ( and or ) character and the '=' sign]
Все работает нормально, но когда строка имеет знак равенства, это перехватывается другими правилами.
Примеры:
mysite.com/change-email/
-> go to request.php
[ok]
mysite.com/change-email
-> go на request.php
[ok]
mysite.com / change-email / dasu564345ytfghafsfda -> go to change-email.php
[ok]
mysite.com / change-email / dasu564345ytfghafsfda = -> go to request.php
[not ok] он должен go to /includes/change-email.php
это правило 3 ° в основном разделе приложения
это .htaccess
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#main app rules
RewriteRule ^change-email(\/|)?$ /request.php?key=change-email [QSA]
RewriteRule ^change-email/([\w+]{1,})(\/|)?$ /includes/change-email.php?email=$1 [QSA] <-- need to catch = sign!
RewriteRule ^([\w+]{1,})(\/|)?$ /request.php?&key=$1 [QSA]
ErrorDocument 404 /request.php