基本上我的网站设置方式如下:
但是我遇到的问题是当我在没有尾部斜杠的情况下访问mysite / site / admin时,它会将~^(<!--.*\R)(\s+<Connector[^>]+>)(.*\R-->.*)~
附加到URL。如果我转到没有尾部斜杠的mysite / site / admin / pages,它会将/?admin=1
附加到URL。我希望它不附加这些查询字符串。
如果我添加尾部斜杠,则不会追加查询字符串。如果我在没有尾部斜杠的情况下转到mysite / site / admin / pages / edit,它不会附加查询字符串,所以看起来只是前两个级别执行此操作。
这令人困惑,我根本不理解。我通过谷歌搜索和搜索这个网站尝试了很多各种各样的东西,但没有任何工作。我是这个.htaccess的新手。这是我的.htaccess文件的样子:
/?admin=1&page=pages
有人可以告诉我我做错了什么或如何解决这个问题?
答案 0 :(得分:1)
这是因为/site/admin/pages
是一个有效的目录而没有尾随斜杠Apache的mod_dir
模块将URL重定向到带有斜杠的一个。
要解决此问题,您可以使用:
RewriteEngine On
# add a trailing slash to directories
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*?[^/])$ %{REQUEST_URI}/ [L,R=302]
RewriteRule ^/?admin/users/([-\w]+)/?$ admin/index.php?admin=1&page=users&subpage=view&user=$1 [L]
RewriteRule ^/?admin/users/create/?$ admin/index.php?admin=1&page=users&subpage=create [L]
RewriteRule ^/?admin/([-\w]+)/([-\w]+)/([-\w]+)/?$ admin/index.php?admin=1&page=$1&subpage=$2&id=$3 [L]
RewriteRule ^/?admin/([-\w]+)/([-\w]+)/?$ admin/index.php?admin=1&page=$1&subpage=$2 [L]
RewriteRule ^/?admin/([-\w]+)/?$ admin/index.php?admin=1&page=$1 [L]
RewriteRule ^/?admin/?$ admin/index.php?admin=1 [L]
RewriteRule ^/?([-\w]+)/?$ index.php?page=$1 [L]