【问题标题】:Removing slash in url (not trailing slash)删除 url 中的斜杠(不是尾部斜杠)
【发布时间】:2014-09-16 05:18:42
【问题描述】:

我的服务器上有一个名为 people 的文件夹,该文件夹中有 index.php 我的网址类似于 mydomain.com/people/?name=value1&age=value2

但我真的希望它看起来像 mydomain.com/people?name=value1&age=value2

【问题讨论】:

    标签: php .htaccess url


    【解决方案1】:

    由于“人”是一个文件夹,而您的脚本位于该文件夹中,唯一的工作方式是关闭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]
    

    【讨论】:

    • 学到了一些新东西。
    【解决方案2】:

    使用mod_rewrite 你可以这样做:

    RewriteEngine On
    RewriteRule ^(.+)/$ $1 [L,R,QSA]
    

    这里不需要QSA,因为它代表Query String Append,默认开启。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-03
      • 1970-01-01
      • 1970-01-01
      • 2018-10-19
      • 2016-01-10
      • 1970-01-01
      • 2014-06-19
      相关资源
      最近更新 更多