.htaccess:重写规则问题,如何将所有内容重定向到管理面板

时间:2014-09-30 06:33:03

标签: .htaccess mod-rewrite

我想将我的网站重定向到管理面板

喜欢

localhost/website/ => localhost/website/admin
localhost/website/login => localhost/website/admin
localhost/website/blog => localhost/website/admin

这是我创建的规则

RewriteEngine on
RewriteCond $1 !^(index\.php)
RewriteRule ^(.*)$ /website/admin/$1 [L]

但这不起作用

5 个答案:

答案 0 :(得分:3)

以下代码会将所有内容重定向到管理页面,并保留属性。这也适用于已经存在的文件!

RewriteEngine On
RewriteCond %{REQUEST_URI} !^website/admin
#RewriteCond %{REQUEST_FILENAME} !-f   #OPTIONAL: Remove '#' if you want existing files to display normally
#RewriteCond %{REQUEST_FILENAME} !-d   #OPTIONAL: Remove '#' if you want existing files to display normally
RewriteRule ^(.*)$ /website/admin/ [L,QSA]

说明:

打开重写引擎:

RewriteEngine On

重写的具体条件:uri(你的域名/ localhost之后的部分)不能({= inverse,NOT)以website/admin =开始(^ =开始行)=你要重写的地方。必须这样做以防止循环。

RewriteCond %{REQUEST_URI} !^website/admin

如果您希望不重写现有文件,可以取消注释2行(删除#)

#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d

改写自己:

  • ^ =行开头
  • ()=子字符串
  • 。* =多个任意符号,或无符号
  • $ =行尾
  • / website / admin =重写的地方
  • [L,QSA] =额外选项:
  • L = last:停止执行更多行
  • QSA =查询字符串追加:保持参数,例如?page = contact eg。

    RewriteRule ^(.*)$ /website/admin/ [L,QSA]

我希望这能澄清我的解决方案。

答案 1 :(得分:0)

尝试:

RewriteEngine On
RewriteCond $1 !^website/admin
RewriteRule ^(.*)$ /website/admin [L]

答案 2 :(得分:0)

您可以根据您的代码更新一些内容:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI}  ^/index\.php/component/quates   [NC]
RewriteRule .*   index.php/component/quotes   [R=301,L]

或阅读此链接:

http://coolestguidesontheplanet.com/redirecting-a-web-folder-directory-to-another-in-htaccess/

答案 3 :(得分:0)

这应该有效:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d      
RewriteCond %{REQUEST_URI} !(website/admin)$ [NC]
RewriteRule ^(.*)$ website/admin [R=301,L]

<强>解释

首先,我们确保请求不适用于存在的文件或目录:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

然后我们看看website/admin是否是我们请求的URL(不区分大小写的[NC]):

  

^表示开始,$结束表达。

RewriteCond %{REQUEST_URI} !^(website/admin)$ [NC]

如果满足所有条件,我们会使用HTTP状态代码301(最后一步[L])重定向到website/admin

RewriteRule ^(.*)$ website/admin [R=301,L]

答案 4 :(得分:0)

试试这个:

RewriteEngine On
RewriteRule ^website/(?!admin).*$ website/admin [L]
RewriteRule ^website/admin[^/]+.*$ website/admin [L]