1

.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##

或者

members/profile...

并且可能其他特殊字符 mod_rewrite 的负载似乎只捕捉到:

members/profile

由于某种原因,最后省略了字符。

我不希望这样,因为我需要捕获 URL 中的每一个字符。有谁知道为什么它没有捕获整个 URL?谢谢。

4

1 回答 1

1

我使用.htaccess包含以下内容的文件测试了您的代码:

RewriteEngine On
RewriteRule ^(.+)$ index.php?url=$1 [PT,L]

这个php脚本叫做index.php

<?php
echo '$_GET[\'url\'] = "' . $_GET['url'] . '"';
?>

确实,它没有用。但是没有任何效果,即使是你描述的那些东西也没有效果。那为什么会这样呢?GET好吧,除非您添加标志,否则Apache 不会将参数传递给脚本: QSA。因此,如果您将.htaccess文件更改为:

RewriteEngine On
RewriteRule ^(.+)$ index.php?url=$1 [PT,L,QSA]

您遇到的一个问题是主题标签没有传递给 PHP 脚本。不幸的是,这是您无法解决的问题。这样做的原因是浏览器不会将第一个哈希开始的每个字符传递给网络服务器。因此,除非您使用一些花哨的 JavaScript,否则您将永远无法获得这些字符。

于 2012-11-25T14:02:25.107 回答