0

需要你的帮助。只是在这个 htaccess 问题上花费了很多,但仍然不知道如何管理它。

我公司网站上有许多http://www.example.com/menu-alias/foo链接,这些链接应该重定向到http://www.example.com/foo

仅此一项不应该是困难的部分,但请听……棘手的部分如下。

如果没有“菜单别名”,我无法让网站(Joomla 1.5)工作,这意味着所有http://www.example.com/foo都应该在内部映射到http://www.example.com /菜单别名/foo。这样用户的浏览器地址栏中仍然有http://www.example.com/foo

为了让它更复杂,我必须 301 将旧的 menu-alias/foo 链接重定向到 /foo。

一些htaccess大师可以帮助我吗?这甚至可能吗?

4

1 回答 1

0

您可以尝试在文档根目录(或 vhost 配置)的 htaccess 文件中添加这些规则:

RewriteEngine On

# externally redirect requests that have "menu-alias"
RewriteCond %{THE_REQUEST} /menu-alias/([^\ \?]+)
RewriteRule ^ /%1 [L,R=301]

# internally rewrite requests back to menu-alias
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/menu-alias/
RewriteRule ^/?(.*)$ /menu-alias/$1 [L]

几个潜在的问题:

  1. Joomla 可能正在寻找原始的未重写请求$_SERVER,如果是这样,重写将不起作用。
  2. /menu-alias/后面添加到 URI 的规则会盲目地重写所有不指向现有资源的请求。这意味着 Joomla 可能处理的“虚拟”路径将在前面附加一个“菜单别名”。
于 2012-10-26T20:44:19.407 回答