.htaccess 用字母 öäå 重写 url 并传递变量
.htaccess rewrite url with letters öäå and passing variables
假设调查名称是 test。
完成表单后重定向到
www.example.com/survey_thank_you.php?survey_name=test
然后将其重写为 www.example.com/test/thank_you 并按预期工作。
但是因为我们这里使用了öäå问题就出现了。如果调查名称是 testä,它会重定向,但会重写为
www.example.com/test%25C3%25A4/thank_you(这个有效)
它应该重写为 www.example.com/testä/thank_you
如果直接进入 www.example.com/testä/thank_you 也可以。
htaccess:
Options +FollowSymLinks
Options -MultiViews
RewriteEngine on
AddCharset UTF-8 .php
AddDefaultCharset utf-8
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} ^survey_name=(.*)/?$
RewriteRule ^survey_thank_you\.php$ /%1/thank_you [R,L,QSD]
RewriteRule ^(.*)/thank_you$ survey_thank_you.php?survey_name= [L,NC,QSA]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(.*)/?$ survey_form.php?survey_name= [L,NC,QSA]
如果我将 (.*) 更改为 ([0-9a-zA-Z]+),它会重写它 allright /testä/thank_you 但随后我收到错误 404。非常感谢任何建议。
test%25C3%25A4
将是 double URL 编码的结果。一级解码,留下 test%C3%A4
.
您可以使用 NE
标志来尝试避免在这个地方进行双重编码,https://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_ne
假设调查名称是 test。
完成表单后重定向到 www.example.com/survey_thank_you.php?survey_name=test
然后将其重写为 www.example.com/test/thank_you 并按预期工作。
但是因为我们这里使用了öäå问题就出现了。如果调查名称是 testä,它会重定向,但会重写为 www.example.com/test%25C3%25A4/thank_you(这个有效) 它应该重写为 www.example.com/testä/thank_you
如果直接进入 www.example.com/testä/thank_you 也可以。
htaccess:
Options +FollowSymLinks
Options -MultiViews
RewriteEngine on
AddCharset UTF-8 .php
AddDefaultCharset utf-8
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} ^survey_name=(.*)/?$
RewriteRule ^survey_thank_you\.php$ /%1/thank_you [R,L,QSD]
RewriteRule ^(.*)/thank_you$ survey_thank_you.php?survey_name= [L,NC,QSA]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(.*)/?$ survey_form.php?survey_name= [L,NC,QSA]
如果我将 (.*) 更改为 ([0-9a-zA-Z]+),它会重写它 allright /testä/thank_you 但随后我收到错误 404。非常感谢任何建议。
test%25C3%25A4
将是 double URL 编码的结果。一级解码,留下 test%C3%A4
.
您可以使用 NE
标志来尝试避免在这个地方进行双重编码,https://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_ne