我在 Linux 服务器 10.0.0.1/cms/ 上安装了 cms。我想将对 10.0.0.1/pages 的每次访问重定向到 10.0.0.1/cms/pages,同时隐藏 URL 中的“cms”。
已经尝试过几次但都失败了。
1> 编辑 /etc/httpd/conf/httpd.conf
DocumentRoot "/var/www/html" --> DocumentRoot "/var/www/html/cms"
这仅适用于索引页。在这种情况下,索引“10.0.0.1/cms/pages”中的超链接将变得不可用,因为 /cms/pages 不再存在于 DocumentRoot 目录“/var/www/html/cms”中。
2> 编辑 /etc/httpd/conf/httpd.conf
Redirect / /cms/
这将导致无限循环 10.0.0.1/cms/cms/cms/...
对此有什么想法吗?
答案1
你可以这样做mod_rewrite
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /cms/$1 [L]
您可以将其放置在/etc/httpd/conf/httpd.conf
您定义的虚拟主机内(如果有的话)或者<Directory>
其他地方。
这会将所有对 /cms/something 的请求重定向到 /something,同时仍然从 /cms/something 获取它。