.htaccess 我的url重写重定向到mydomain.com/var/www/clients/client3/web25/
我正试图在我的joomla网站上重写一个url。我有一个额外的页面,上面有一些其他的东西 我有:.htaccess 我的url重写重定向到mydomain.com/var/www/clients/client3/web25/,.htaccess,url-rewriting,.htaccess,Url Rewriting,我正试图在我的joomla网站上重写一个url。我有一个额外的页面,上面有一些其他的东西 我有: RewriteRule ^company/([^/]+) company?alias=$1 [NC] 我希望company/somecompany在哪里显示url company?alias=somecompany将提供什么(而不是转发给它) 我得到的是重定向到: 此外,如果我包含一个“-”式的“公司/某个公司”,它会跳过我的重写,直接转到joomla重写规则(并且找不到文章) 我做错了什么?您
RewriteRule ^company/([^/]+) company?alias=$1 [NC]
我希望company/somecompany在哪里显示url company?alias=somecompany将提供什么(而不是转发给它)
我得到的是重定向到:
此外,如果我包含一个“-”式的“公司/某个公司”,它会跳过我的重写,直接转到joomla重写规则(并且找不到文章)
我做错了什么?您需要添加一个
RewriteBase
。当重写规则的目标不是以斜杠开头(使其成为绝对URI)时,apache需要猜测它是URI路径还是文件路径,并且错误地猜测它是文件路径。添加一个基告诉apache它是一个URI路径
RewriteBase /
或者向目标添加前导斜杠:/company/?alias=$1
您还需要在company中添加尾随斜杠,并使用[L]
标志:
RewriteRule ^company/([^/]+) company/?alias=$1 [L,NC]
缺少的尾部斜杠可能是导致mod_dir和
DirectorySlash
重定向的罪魁祸首。L
标志可能是joomla规则最终得到应用的原因。以下是工作示例:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule ^/?old-folder/(.*)$ /new-folder/$1 [R=301,L]
</IfModule>
重新启动发动机
重写基/
重写规则^/?旧文件夹/(.*)$/新文件夹/$1[R=301,L]
有关更多示例,请检查: