2016-02-26 135 views
0

这里是我的.htaccess的mod_rewrite的部分:

RewriteEngine on 
RewriteBase/

RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ web/$2?w=$1 [QSA] 

这样做是什么,如果有人访问http://example.com/webname/ 是真正处理的URL是 http://example.com/web/index.php?w=id

现在,如果我尝试将一个额外的随机GET参数传递给我重写的URL,则该参数将被忽略。所以,如果我试图在这里做访问:

index.php?page=page_id

参数page被忽略。它似乎并没有得到通过。

这个问题能解决吗?如果是这样,怎么样?

+2

'index.php'不符合您的重写规则您不允许' 。' –

+0

那么我该如何让点?如何解决它? –

+0

谷歌是你的朋友:http://www.regular-expressions.info/charclass.html –

回答

0

您应该使用这样的规则:

RewriteEngine on 
RewriteBase/

RewriteRule ^([\w-]+)/?$ web/index.php?w=$1 [QSA,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([\w-]+)/([\w.-]+)/?$ web/$2?$1=1 [QSA,L] 

这将让你使用漂亮的网址为任一:

http://example.com/welcome 
http://example.com/welcome?page=page_id 
+0

但我有更多的只是一个变种.. –

+0

example.com/{the_username}/index.php?template = {tempp_name} &id = {page_id} –

+1

什么是您想要在浏览器中显示的确切网址以及相同的内部网址应该是什么? – anubhava