【问题标题】:PHP mod_rewrite on all url所有 url 上的 PHP mod_rewrite
【发布时间】:2012-06-19 20:32:25
【问题描述】:

我希望你能提供帮助,我已经尝试了几个小时来理解 mod rewrite,但我似乎一无所获。

我想要实现的是一个 mod_rewrite,它将整个 url 作为一个 var,除非它以 '/images/.....' 等开头

我的想法是我的所有页面都在一个表中,然后从那时起找到并处理。

目前我有

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php?url=$1    

这在一定程度上有效, 我可以使用 $_GET 获得的任何 URL 都很棒,但我不想使用 request_filename 条件,

id like in the rewrite rule to exclude if url == '/images/' or == /css/ etc

希望这是有道理的,我相信这很容易。 另外,如果您对如何改进我试图实现这一目标的方式有任何想法,那么请告诉我。

干杯!


目前得到

RewriteEngine On
RewriteBase /

RewriteRule ^/images/ - [L]
RewriteRule ^/css/ - [L]
RewriteRule (.*) index.php?url=$1 

感谢 Alexander 但 $_GET['url'] == 'index.php'

【问题讨论】:

  • 我又卡住了,找不到答案。我的 htaccess 看起来像 RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !^/css/ RewriteCond %{REQUEST_URI} !^/jobs/ RewriteCond %{REQUEST_URI} ! ^/images/ RewriteCond %{REQUEST_URI} !^/javascript/ RewriteRule (.*) index.php?url=$1 这很好,直到我真的想在 url 中使用 get var,比如 www.domain.com/login .htm?redirect=123 。 login.htm 以 $_GET['url'] 的形式返回,但不知道如何让任何其他 get var 正常工作,有什么想法吗?

标签: .htaccess mod-rewrite


【解决方案1】:

首先为这些目录设置规则并使用[L] 标志。

RewriteRule ^images/ - [L]
RewriteRule ^css/ - [L]
RewriteRule (.*) index.php?url=$1

未经测试的替代方案也可能是:

RewriteCond %{REQUEST_URI} !^/images/
RewriteCond %{REQUEST_URI} !^/css/
RewriteRule (.*) index.php?url=$1

【讨论】:

  • 我已经对此进行了测试,并且打扰他们 rewriteConds 工作,但是现在 url 总是返回 'index.php'
  • 我现在已经对其进行了排序,我不是 100% 确定这是我想要的工作方式,但我删除了 RewriteCond %{REQUEST_FILENAME} !-f 和 RewriteCond %{REQUEST_FILENAME} !-d由于某种原因导致只是 index.php,但现在我再次添加它们它可以工作
猜你喜欢
  • 1970-01-01
  • 2011-08-13
  • 2011-06-08
  • 1970-01-01
  • 2012-11-12
  • 2011-02-25
  • 2012-01-08
  • 1970-01-01
  • 2015-12-31
相关资源
最近更新 更多