htaccess文件
RewriteEngine On
RewriteRule ^(.+)$ index.php?url=$1 [PT,L]
无论我添加到URL中,mod_rewrite会捕获它并将GET变量url放入其中,并将后台用户重定向到我的index.php页面。
示例:
http://www.mysite.com/members/profile
在我的index.php页面中,如果我然后将url参数输出到我得到的屏幕
members/profile
这就是我想要的,但问题是当我向URL添加这样的内容时:
members/profile##
OR
members/profile...
并且可能只有大量其他特殊字符mod_rewrite似乎只能抓住:
members/profile
出于某种原因将字符留在最后。
我不希望这样,因为我需要捕获URL中的每个字符。有谁知道为什么它没有捕获整个URL?感谢。
答案 0 :(得分:1)
我使用包含以下内容的.htaccess
文件测试了您的代码:
RewriteEngine On
RewriteRule ^(.+)$ index.php?url=$1 [PT,L]
这个PHP脚本名为index.php
:
<?php
echo '$_GET[\'url\'] = "' . $_GET['url'] . '"';
?>
确实,它没有用。但没有任何效果,甚至没有你所描述的事情。那么为什么会这样呢?好吧,除非你添加一个标志:QSA,否则Apache不会将GET
参数传递给脚本。因此,如果您将.htaccess
文件更改为:
RewriteEngine On
RewriteRule ^(.+)$ index.php?url=$1 [PT,L,QSA]
您遇到的一个问题是主题标签未传递给PHP脚本。不幸的是,这是你无法解决的问题。这样做的原因是,从第一个哈希开始的每个字符都不会被浏览器传递给Web服务器。因此,除非你使用一些奇特的JavaScript,否则你永远无法获得这些角色。