【问题标题】:.htaccess - doesn't work subdirectory.htaccess - 子目录不起作用
【发布时间】:2012-03-23 21:52:34
【问题描述】:

我使用这些规则:

RewriteEngine on

RewriteRule ^robots.txt$ - [L]
RewriteRule ^favicon.ico$ - [L]

RewriteRule ^([^(/\.)]+)/([^(/\.)]+)/([^(/\.)]+)/([^(/\.)]+)/?$ index.php?id=$1&id2=$2&id3=$3&id4=$4 [QSA,L] 
RewriteRule ^([^(/\.)]+)/([^(/\.)]+)/([^(/\.)]+)/?$ index.php?id=$1&id2=$2&id3=$3 [QSA,L] 
RewriteRule ^([^(/\.)]+)/([^(/\.)]+)/?$ index.php?id=$1&id2=$2 [QSA,L]
RewriteRule ^([^(/\.)]+)/?$ index.php?id=$1 [QSA,L]

在我的网络演示中运行良好,但是当我想进入管理部分并输入 /admin 时,我被重定向到 admin/?id=admin (坏页) - 对于显示登录表单,我必须输入 /admin/index.php 而不是简单的 admin

你能帮我解决一下吗?

谢谢

【问题讨论】:

  • /admin/ 是一个真正的目录吗?在这种情况下,您必须在该目录中添加另一个 .htaccess 来进行重定向
  • 但是放到前端 .htaccess 中会不会更容易和更干净?
  • DirectorySlash Off 应该可以解决这个问题。

标签: php .htaccess rewrite subdirectory


【解决方案1】:

所以,我通过这种方式解决了这个问题:

RewriteRule ^(admin)/(.*)$ $1/$2 [L]

【讨论】:

  • 你没有说你希望它像那样工作,更好地表达你的问题!
【解决方案2】:

您应该有一个规则通过 index.php 推送所有内容,而不是大量的重写规则,然后使用 PHP 来管理这些页面,而不是使用 $_SERVER 变量。

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

这只是我的建议,但是在回答您的原始问题时,请尝试将此作为您的第一条规则:

RewriteRule ^/admin$ index.php?id=admin [QSA,L]

【讨论】:

  • 我正在尝试类似 **RewriteRule ^/admin$ admin/login.php [QSA,L] **,但不幸的是不起作用
猜你喜欢
  • 2011-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多