【发布时间】:2014-09-16 05:18:42
【问题描述】:
我的服务器上有一个名为 people 的文件夹,该文件夹中有 index.php 我的网址类似于 mydomain.com/people/?name=value1&age=value2
但我真的希望它看起来像 mydomain.com/people?name=value1&age=value2
【问题讨论】:
我的服务器上有一个名为 people 的文件夹,该文件夹中有 index.php 我的网址类似于 mydomain.com/people/?name=value1&age=value2
但我真的希望它看起来像 mydomain.com/people?name=value1&age=value2
【问题讨论】:
由于“人”是一个文件夹,而您的脚本位于该文件夹中,唯一的工作方式是关闭DirectoryIndex,它会自动重定向浏览器,以便在任何请求的末尾包含一个斜杠文件夹。
注意,这个是一个斜杠,URI以/people/结尾。 ? 及其后面的所有内容都是查询字符串。
关闭DirectoryIndex 可能非常危险,因为它用于防止信息泄露。如果您的文件夹没有尾部斜线,则请求文件夹将导致显示该文件夹的内容即使您有目录索引。换句话说,index.php 被忽略,相反,您将获得所有文件夹内容的列表。因此,为了防止这种情况发生,您必须在内部添加斜线。
所以在你的文档根目录的 htaccess 文件中是这样的:
DirectoryIndex Off
RewriteEngine On
RewriteCond %{THE_REQUEST} \ /+people/\?
RewriteRule ^ /people [L,R]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*[^/])$ /$1/ [L]
【讨论】:
使用mod_rewrite 你可以这样做:
RewriteEngine On
RewriteRule ^(.+)/$ $1 [L,R,QSA]
这里不需要QSA,因为它代表Query String Append,默认开启。
【讨论】: