2012-06-19 32 views
1

我希望你能帮忙,我已经尝试了几个小时来理解mod重写,但我似乎没有得到任何地方。所有url上的PHP mod_rewrite

我试图实现是一个mod_rewrite的,是以整个URL作为一个变种,除非它的东西,如开始“/图片/ .....”等

的想法是,我的所有网页在一张桌子里,然后从那里找到并处理。

目前我有

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

这个工程到一个点, 我可以使用$ _GET这是伟大的任何URL,但我不希望使用REQUEST_FILENAME条件,

ID喜欢在重写规则排除如果url =='/ images /'或==/css/etc

希望这是有道理的,我相信这很容易。 此外,如果你有任何想法如何改善即时通讯试图实现这将是有用的,那么请让我知道。

干杯!


目前有

RewriteEngine On 
RewriteBase/

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

感谢亚历山大,但$ _GET [ '网址'] == '的index.php'

+0

我又被卡住,无法找到答案。我的htaccess的样子RewriteEngine叙述在 RewriteBase/ 的RewriteCond%{} REQUEST_FILENAME!-f 的RewriteCond%{} REQUEST_FILENAME!-d 的RewriteCond%{REQUEST_URI}!^/CSS/ 的RewriteCond%{REQUEST_URI}!^ /职位/ RewriteCond%{REQUEST_URI}!^/javascript/ RewriteRule(。*)index.php?url = $ 1这很好,直到我真的想在一个url中使用get var就像www.domain.com/login.htm?redirect=123一样。 login.htm以$ _GET ['url']的形式返回,但不知道如何保留任何其他get vars之后像往常一样工作,任何想法? – BenPRJ

回答

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 
+0

谢谢亚历山大。 – BenPRJ

+0

我已经测试了这个,麻烦他们rewriteConds的工作,但现在的网址总是返回'index.php' – BenPRJ

+0

@ BenJohnson,什么时候? – Alexander