【问题标题】:Use mod_rewrite to rewrite get arguments with slashes使用 mod_rewrite 用斜杠重写 get 参数
【发布时间】:2014-11-22 00:51:41
【问题描述】:

我有一个网站,其中包含一些独立网页(如 signup.php)和一个使用 GET 参数显示其余页面的主要 PHP 文件。

我希望重写对服务器的 HTTP 请求,以便这样的请求:

http://example.com/website/settings/ 会显示页面

http://example.com/website/index.php?page=settings,不影响所有其他页面。

我对 mod_rewrite 很陌生,我所有的尝试都导致了 404 或 500 响应代码。编写 RewriteCond 和 RewriteRule 的正确方法是什么?

【问题讨论】:

    标签: apache .htaccess mod-rewrite


    【解决方案1】:

    在文档根目录(website 文件夹所在的位置)的 htaccess 文件中添加这些规则:

    RewriteEngine On
    
    RewriteCond %{THE_REQUEST} \ /+website/(?:index\.php|)\?page=([^&]+)/(&|\ |$)
    RewriteRule ^ /website/%1/ [L,R]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^website/(.+)/$ /website/index.php?page=$1 [L,QSA]
    

    如果这样更有意义,您也可以将这些规则放在 website 文件夹中:

    RewriteEngine On
    RewriteBase /website/
    
    RewriteCond %{THE_REQUEST} \ /+website/(?:index\.php|)\?page=([^&]+)/(&|\ |$)
    RewriteRule ^ %1/ [L,R]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.+)/$ index.php?page=$1 [L,QSA]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-29
      • 1970-01-01
      • 1970-01-01
      • 2012-05-20
      • 1970-01-01
      • 2011-06-28
      • 2015-02-06
      • 1970-01-01
      相关资源
      最近更新 更多