如何解决当变量内部有斜杠时如何处理 htaccess 重写?
我想将此 https://example.com/EUR/USD
重写为 https://example.com/details.PHP?code=EUR/USD
(EUR/USD
是可以更改的变量,例如 USD/GBP
、GBP/EUR
等。)>
因为变量内部有斜线,下面的规则不起作用,但如果变量内部没有斜线(例如:https://example.com/details.PHP?code=EURUSD
),它就完美了。
RewriteEngine On
RewriteRule ^([^/]*)$ /details.PHP?code=$1 [L]
如何处理这种情况?
编辑:我的货币 htaccess :
RewriteEngine on
RewriteRule ^/(.*)$ /$1 [L,R=301]
#RewriteCond %{SERVER_PORT} 80
#RewriteRule ^(.*)$ https://example.com/$1 [R,L]
#RewriteCond %{HTTP_HOST} ^www.example.com [NC]
#RewriteRule ^(.*)$ https://example.com/$1 [L,R=301,NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.PHP -f
RewriteRule ^(.*)$ $1.PHP
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ details.PHP?code=$1
解决方法
您的子模式 [^/]*
将匹配 0 个或多个不是 /
的任何字符,并且由于您的 GET 变量中有 /
这将不起作用。
您可以使用:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+?)/?$ $1.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([A-Z/]+)/?$ details.php?code=$1 [L,QSA]
注意 2 个条件的 2 RewriteCond
行,这意味着不对真实文件和真实目录执行此规则。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。