【问题标题】:RewriteCond %{QUERY_STRING} for new site新网站的 RewriteCond %{QUERY_STRING}
【发布时间】:2019-03-04 03:16:47
【问题描述】:

我有一个非常古老的 Joomla-1.0 站点,其中包含数以万计的文章,我们最近将这些文章升级到带有 SEF 的当前 Joomla 版本。这是在 fedora29 上的 apache-2.4.34 上。

问题是它不再支持旧的 URL 格式,所以我正在尝试重写许多旧的 URL 格式以使用该站点。

我最困难的一个包含一个查询字符串:

example.com/index.php?option=login

这应该重定向到 example.com/register

但是,我的重写规则不起作用:

# /index.php?option=login
RewriteEngine on
RewriteCond %{QUERY_STRING} ^option=login$
RewriteRule ^/index.php$      https://linuxsecurity.com/register       [R=301,L,QSD]

这被放置在文档根目录的 .htaccess 文件中。我还尝试将它放在虚拟域配置中的一个部分中。

它似乎被完全忽略了。它会报告类似“找不到组件”的错误,好像它正在被 joomla 解释。

下面还有其他几个似乎不起作用的 RewriteRule 条目。他们只报告 404 页。如果我在替换链接中输入文章 ID,它就可以正常工作。

RewriteRule ^/content/view/([^/]+)              /index.php?option=com_content&view=article&id=$1 [R=301,L]

如果您能提供任何建议,我将不胜感激。

【问题讨论】:

  • 去掉起始斜线,相对于当前目录写入。

标签: php apache mod-rewrite joomla3.0


【解决方案1】:

您的条件很好,但需要调整登录规则。请尝试:

RewriteEngine on
RewriteCond %{QUERY_STRING} ^option=login$
RewriteRule ^(.*)  https://linuxsecurity.com/register  [R=301,L,QSD]

对于其他内容重定向,这是我之前用于 Joomla 1.0 到 Joomla 3.x 的:

RewriteRule ^content/view/(.*)$ /index.php?option=com_content&view=article&id=$1 [L,R=301]

https://www.yellowwebmonkey.com/developer-blog/item/redirect-joomla-1-0-sef-links-for-joomla-3-x

【讨论】:

    猜你喜欢
    • 2016-05-03
    • 2013-07-29
    • 1970-01-01
    • 2011-02-22
    • 2015-05-21
    • 2012-06-27
    • 2020-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多