.htaccess 从查询字符串中获取(异常)
.htaccess GET from query string (exception)
我有一个重写规则,它可以跨域完美运行,但在同一域上会产生无限循环。
Allow from all
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ url.php?i= [R=301,L]
我们的目标是创建一个替代 404 错误的方法,它可以正确转到 link 缩短应用程序中的页面。
例如,example.com/abc需要重定向到example.com/url.php?i=abc
即它从 '/'
之后获取 'abc'
但是只要 url.php 托管在 xyz.com 上,它就会重定向一次并以
结束
示例。com/url.php?i=url.php 而不是值“abc”
修复此重写规则以使其获取 'abc' 一次并将其传递给正确的 url.php 的最佳方法是什么?
谢谢
您需要删除 R=301
标志,因为您不想向外部客户公开您的内部处理。要使其成为内部,您不能使用 R
标志。
如前所述,您需要使用 RewriteCond
来跳过正在重写的文件和目录。
建议代码:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ url.php?i= [QSA,L]
QSA
标志用于追加查询字符串。
确保在测试此更改之前完全清除浏览器缓存。
我有一个重写规则,它可以跨域完美运行,但在同一域上会产生无限循环。
Allow from all
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ url.php?i= [R=301,L]
我们的目标是创建一个替代 404 错误的方法,它可以正确转到 link 缩短应用程序中的页面。
例如,example.com/abc需要重定向到example.com/url.php?i=abc
即它从 '/'
之后获取 'abc'但是只要 url.php 托管在 xyz.com 上,它就会重定向一次并以
结束示例。com/url.php?i=url.php 而不是值“abc”
修复此重写规则以使其获取 'abc' 一次并将其传递给正确的 url.php 的最佳方法是什么?
谢谢
您需要删除 R=301
标志,因为您不想向外部客户公开您的内部处理。要使其成为内部,您不能使用 R
标志。
如前所述,您需要使用 RewriteCond
来跳过正在重写的文件和目录。
建议代码:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ url.php?i= [QSA,L]
QSA
标志用于追加查询字符串。
确保在测试此更改之前完全清除浏览器缓存。