4

我正在尝试重写我的 joomla 网站上的网址。我有一个额外的页面,上面有一些其他的东西。

我有:

RewriteRule ^company/([^/]+) company?alias=$1 [NC]

我希望 company/somecompany 在哪里显示 url company?alias=somecompany 将提供什么(不转发)。

我得到的是重定向到:

http://www.mydomain.dk/var/www/clients/client2/web5/web/company?alias=somecompany

此外,如果我包含一个“-”,如“公司/某些公司”,它会跳过我的重写,只是转到 joomla 重写规则(并且找不到文章)

我究竟做错了什么?

4

2 回答 2

4

您需要添加一个RewriteBase. 当您的重写规则的目标不是以斜杠开头(使其成为绝对 URI)时,apache 需要猜测它是 URI 路径还是文件路径,并且它错误地猜测它是文件路径。添加一个 base 告诉 apache 它是一个 URI 路径。

RewriteBase /

或在目标中添加前导斜杠:/company/?alias=$1

您还想在 company 添加一个斜杠并使用[L]标志:

RewriteRule ^company/([^/]+) company/?alias=$1 [L,NC]

缺少的斜杠可能是导致 mod_dir 和DirectorySlash重定向的罪魁祸首。L标志可能是 joomla 规则最终被应用的原因。

于 2012-09-30T19:41:08.980 回答
0

这是工作示例:

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteBase /
  RewriteRule ^/?old-folder/(.*)$ /new-folder/$1 [R=301,L]
</IfModule>

有关更多示例,请检查:

于 2019-02-11T15:26:16.723 回答