如何从 /page 重定向到 /cms/page 并在 URL 中隐藏“cms”?

如何从 /page 重定向到 /cms/page 并在 URL 中隐藏“cms”?

我在 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 获取它。

相关内容