【问题标题】:htaccess mod_rewrite about?subpage=missionhtaccess mod_rewrite about?subpage=mission
【发布时间】:2016-02-11 10:37:34
【问题描述】:

我正在尝试使用 mod_rewrite 来清理 URL 中的 $_GET[] 信息

目前将此作为我的 .htaccess

# BEGIN Rewrite

ErrorDocument 404 /404.php

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

# END Rewrite

我有一个 about.php 页面,该页面有几个子页面,使用 .htaccess 文件看起来像

http://domain.com/about

查看子页面“任务”会是什么样子

http://domain.com/about?subpage=mission 

清理此 URL 的最佳方法是什么?我讨厌 .htaccess 的东西。

【问题讨论】:

标签: apache .htaccess mod-rewrite url-rewriting friendly-url


【解决方案1】:

编辑

已编辑以显示通用规则:

RewriteCond %{THE_REQUEST} ^GET\ /([^?]+)\?subpage=([^&\s]+) [NC]
RewriteRule ^.+$ /%1/%2? [R=301,L]

RewriteRule ^(.+)/([^/]+)/?$ /$1.php?subpage=$2 [L]

【讨论】:

  • 现在有办法对我创建的任何页面执行此操作吗?
  • @NicholasPanella 这取决于这些页面的查询参数,如果参数相同(subpage),那么您可以将/about\? 替换为(?:about|some|other|page/with|paths)\?
  • 我收到了这个RewriteCond %{THE_REQUEST} ^GET\ (?:about|members)\?subpage=([^&\s]+) [NC] 那么这部分怎么样(下)? RewriteRule ^about/?$ /about/%1? [R=301,L] RewriteRule ^about/(.+)/?$ /about.php?subpage=$1 [L]
  • 我想没有办法使用 * 来获取任何 php 文件的名称并应用相同的规则替换 ?subpage=somename
  • @NicholasPanella 编辑了上面的答案以显示通用规则。
猜你喜欢
  • 1970-01-01
  • 2012-04-17
  • 1970-01-01
  • 1970-01-01
  • 2011-01-12
  • 2014-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多