我有以下htaccess文件:
RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteCond %{REQUEST_URI} !^/site/v1/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /site/v1/$1
RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteRule ^(/)?$ site/v1/ [L]
因此,当我访问domain.com
或www.domain.com
时,我会直接转到domain.com/site/v1
,而不会在浏览器上显示/site/v1
部分。
但我的问题是,在site/v1
文件夹中,有admin
个文件夹,其中包含网站的CMS,当我访问domain.com/admin
时,它会重定向到domain.com/site/v1/admin
,/site/v1
部分显示在浏览器上。
所以,我的问题是,如何在不显示所有路径的情况下访问/site/v1/admin
文件夹,即当我访问domain.com/admin
时,它访问子文件夹,但不是显示它?
在其他格式中,我有:
- 我访问domain.com/about
- 在服务器端,我实际上在domain.com/site/v1/about
- 在我的浏览器中,我看到domain.com/about
- ps:about
这里是一个通过RewriteCond指令(在另一段代码上)传递给我的后端的参数,不是文件夹(但它与文件夹一样)
我也有:
- 我访问domain.com/admin
- 在服务器端,我实际上在domain.com/site/v1/admin
- 在我的浏览器中,我看到domain.com/site/v1/admin
我想要的是什么:
- 之前的最后一项"我看到domain.com/admin
"
谢谢!
修改
以下是更改后的完整htaccess文件:
# force ssl
RewriteEngine on
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteCond %{REQUEST_URI} !^/site/v1/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /site/v1/$1
RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteRule ^admin/$ /site/v1/admin/ [L]
RewriteRule ^(/)?$ site/v1/ [L]
答案 0 :(得分:0)
重写基本网址的一种简单方法是向我们提供这样的重写规则。
RewriteRule ^$ /site/v1/ [L]
要解决您的管理目录问题,只需添加以及此类附加规则。:
RewriteRule ^admin/$ /site/v1/admin/ [L]