如何使用mod_rewrite将域名后的所有字符作为一个参数捕获? 我有脚本加载其他页面内容并显示像标准页面。 示例脚本地址如下所示:
example.com/script.php/?www='/some/paths/etc'
我想将该网址掩盖为如下所示:
example.com/some/paths/etc
如果没有路径,它应该看起来像
example.com/
可以有不同数量的网址部分(a / b / c /.../ X /)
我对mod_proxy感兴趣,但我只能用.htaccess这样做,所以它不能解决我的问题。 我不能将一个地址重定向到另一个地址,它们必须分开。
答案 0 :(得分:2)
您可以通过mod_rewrite
代理(只要mod_proxy
已编译到服务器中),这可以通过.htaccess文件完成。请注意,RewriteEngine On
要求{。1}}可以在.htaccess中覆盖。
.htaccess文件中的以下内容:
Options FollowSymLinks
Options FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/script.php/?www=
RewriteRule ^/script.php/?www='([^']+)' http://example.com/$1
RewriteRule ^/(.*) /script.php/?www='$1' [P]
将您的脚本路径与?www =参数匹配(如果匹配不匹配,则不会进行重写)。第一个RewriteCond
将匹配www =参数并重写请求的可见路径。第二个RewriteRule
然后代理请求(由于 [P] 标志)到脚本并将获得“内容”。
注意:这尚未经过测试,但希望能让您朝着正确的方向前进,以解决问题。此外,如果script.php需要可选的参数RewriteRule
,您可能需要调整&var2=whatever
以匹配它并使用括号存储它。然后,您可以使用%1调用这些参数。有关详情,请参阅documentation。
另外,为了帮助您调试重写,您可以使用:
RewriteCond
编辑:添加了RewriteLog /full/path/to/your/log/file
RewriteLogLevel 3
内容,澄清了顶部的代码段将放入.htaccess文件中