2013-05-08 123 views
0

我遇到了我的.htaccess mod_rewrite问题。我制作了一个简单的自定义CMS,并将其放在我的域的子目录中; http://www.example.com/cmsHtacces mod_rewrite子目录

我有以下几种情况:?

CMS/index.php页面=模块/页/ index.php文件 转换为 CMS /模块/页/指数

和 CMS /的index.php?页=模块/页/ edit.php?ID = 1 转换为 CMS /模块/页/编辑/ 1

我已经有了它的子域工作,但是当我使用它example.com/cms不会做任何事情

我做了这个的.htaccess,但我无法得到它的工作...

RewriteEngine On 
Options +FollowSymlinks 
RewriteBase/


RewriteCond %{REQUEST_FILENAME} -f [NC,OR] 
RewriteCond %{REQUEST_FILENAME} -d [NC] 



RewriteRule ^(.*?)$ $1 [L] 

RewriteRule ^/cms/([^/]*)/$ cms/index.php?page=$1 [L,QSA] 
RewriteRule ^/cms/([^/]*)$ /cms/index.php?page=$1 [L,QSA] 
RewriteRule ^/cms/pages/([^/]*)/$ /cms/index.php?page=pages/$1 [L,QSA] 
RewriteRule ^/cms/pages/([^/]*)$ /cms/index.php?page=pages/$1 [L,QSA] 
RewriteRule ^/cms/modules/([^/]*)/([^/]*)/$ /cms/index.php?page=modules/$1/$2 [L,QSA] 
RewriteRule ^/cms/modules/([^/]*)/([^/]*)$ /cms/index.php?page=modules/$1/$2 [L,QSA] 
RewriteRule ^/cms/modules/([^/]*)/([^/]*)/([^/]*)$ /cms/index.php?page=modules/$1/$2&id=$3 [L,QSA] 
+0

以何种方式是不工作?它应该做什么?如果我给它一个URL,那么期望的输出是什么? – icabod 2013-05-08 16:46:39

+0

我编辑了这篇文章,我希望我现在清楚 – 2013-05-08 17:01:12

回答

0

如果这是在一个htaccess文件中,URI的前缀被删除(前导斜杠),所以这些模式不会匹配任何内容。无论是从模式中删除斜线或使其可选的(用?):

RewriteRule ^/?cms/([^/]*)/$ cms/index.php?page=$1 [L,QSA] 
RewriteRule ^/?cms/([^/]*)$ /cms/index.php?page=$1 [L,QSA] 
RewriteRule ^/?cms/pages/([^/]*)/$ /cms/index.php?page=pages/$1 [L,QSA] 
RewriteRule ^/?cms/pages/([^/]*)$ /cms/index.php?page=pages/$1 [L,QSA] 
RewriteRule ^/?cms/modules/([^/]*)/([^/]*)/$ /cms/index.php?page=modules/$1/$2 [L,QSA] 
RewriteRule ^/?cms/modules/([^/]*)/([^/]*)$ /cms/index.php?page=modules/$1/$2 [L,QSA] 
RewriteRule ^/?cms/modules/([^/]*)/([^/]*)/([^/]*)$ /cms/index.php?page=modules/$1/$2&id=$3 [L,QSA] 

此外,您的第一条规则可以被简化为:

RewriteCond %{REQUEST_FILENAME} -f [NC,OR] 
RewriteCond %{REQUEST_FILENAME} -d [NC] 
RewriteRule^- [L] 
+0

该死的,不知道解决方案太简单了!感谢您的回答!! – 2013-05-08 22:02:44