【问题标题】:How to give proper way to link the shorten URL in htaccess?如何提供正确的方法来链接 htaccess 中的缩短 URL?
【发布时间】:2014-04-19 20:01:16
【问题描述】:

原文:http://www.mysite.my/page.php?id=688

带html func代码:

{capture name=some_content assign=page_url}
{if $seo_settings.enable_mod_rewrite}{seo->makeDetailsLink p1=`$v.id` p2=`$v.title`}{else}{$live_site}/page.php?id={$v.id}{/if}
{/capture}

启用 URL 友好选项后。

目前,它的工作方式如下:www.mysite.com/item-name123/page.html。但是,我尝试将page.html$ 删除为page$,但它仍然显示旧链接。我需要重新编写指向www.site.com/item-name123/page 的url 链接以使其正常工作。

如何将其转换为www.site.com/page/item-name123,点击文本后会自动找到正确的链接,如下所示:www.site.com/page/item-name123

当前代码:

RewriteRule ^([0-9]+)-([^\/]+)?/page.html$ page.php?id=$1 [nc,qsa]
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d

已更新:abcitem-name123(以便更好地理解)


.htaccess 的完整代码

http://textuploader.com/t458

【问题讨论】:

  • 您必须了解查询中的变量。我现在不明白。你有这个模式:^([0-9]+)-([^\/]+)?/page.html$。您提供的 URL (item-name123/page.html) 与此正则表达式不匹配。这将匹配:1-item/page.html 或此:123-sdfdfs,以及此:1-/page.html;,但不是您的网址。此规则适用于您的网址:RewriteRule ^(?:[A-Za-z0-9]+-)?([0-9]+)/page.html$ page.php?id=$1 [nc,qsa]。并不是说第一组是非捕获的。

标签: html .htaccess mod-rewrite


【解决方案1】:

首先,mod重写规则有下一个结构:RewriteRule Pattern Substitution [flags]

Pattern 是 perl 兼容的正则表达式。

重写规则的替换是替换与 Pattern 匹配的原始 URL 路径的字符串。

source

因此,模式中的每个(..) 块都指代变量。在您的重写器中,您有 2 组括号,但实际 url 中只有一个变量,即您要引用的变量。

另外,您的正则表达式无效。您必须转义一些符号,例如 \.

你重写的规则模式必须至少是这样的:

^([0-9]+)-([^\/]+)?\/page\.html$

回答您的问题。我认为这会起作用:

RewriteRule ^page/?$ index.php?action=page_action[L]

How can I transform it to be "www.site.com/page/abc"

使用这个:

RewriteRule ^page/([A-Za-z0-9-]+)/?$ index.php?action=page_action&page=$1 [L] // $1 refers to (..) in pattern

更新

尝试在每行末尾添加标志 [L] 并告诉我结果。

很奇怪,我的代码对你没有帮助。刚试过这个,这对我有用。带标志和不带标志(没有标志,他将我重定向到替换页面。

【讨论】:

  • 很高兴看到您的回复。但是您提供的代码不起作用。它给出了这个错误“此外,在尝试使用 ErrorDocument 处理请求时遇到了 500 Internal Server Error 错误。”
  • 我首先在所有地方更新了我的代码。另外,我在我的本地主机上尝试了这个规则,它工作正常。你能提供你的.htaccess文件的完整代码吗?
猜你喜欢
  • 1970-01-01
  • 2012-03-15
  • 1970-01-01
  • 1970-01-01
  • 2021-05-23
  • 2013-06-22
  • 1970-01-01
  • 2013-10-15
  • 2011-02-18
相关资源
最近更新 更多