【问题标题】:.HTACCESS url rewrite - 4 simple rewrite rules are not working (GoDaddy+WordPress).HTACCESS url 重写 - 4 个简单的重写规则不起作用(GoDaddy+WordPress)
【发布时间】:2017-10-06 22:16:32
【问题描述】:

我想知道我的重写规则是否不正确,因为它们不适用于我的 Godaddy 共享服务器?

我有四个非常基本的 .htaccess URL 重写规则。 每当用户键入/点击链接时:

  1. 漂亮的 SEO(所需)链接 http://www.electriccarlos.com/albums/
    其实是http://www.electriccarlos.com/type/audio/

  2. 漂亮的 SEO(所需)链接 http://www.electriccarlos.com/discography/
    其实是http://www.electriccarlos.com/type/audio/

  3. 漂亮的 SEO(所需)链接 http://www.electriccarlos.com/gallery/
    其实是http://www.electriccarlos.com/type/gallery/

  4. 漂亮的 SEO(所需)链接 http://www.electriccarlos.com/videos/
    其实是http://www.electriccarlos.com/type/video/


.htaccess 文件:

# BEGIN Omar Juvera
RewriteEngine On
    # albums
RewriteRule    ^albums/?$       type/audio/     [NC,L]
RewriteRule    ^discography/?$  type/audio/     [NC,L]
    # gallery
RewriteRule    ^gallery/?$      type/gallery/   [NC,L]
    # videos
RewriteRule    ^videos/?$       type/video/     [NC,L]
# END Omar Juvera


# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

.htaccess 文件配置正确,RedirectMatch 处于活动状态。

【问题讨论】:

  • 您是否确认 mod_rewrite 已启用/工作? RedirectMatch 是一个 mod_alias 指令(默认启用)。您也不应该混合来自两个模块的重定向/重写。
  • 我正在运行 WordPress。它的重定向作品
  • 啊,如果你有WP,你还有其他指令吗?您将这些指令放在哪里 - 我们可能需要查看您的整个 .htaccess 文件。这些页面是否在 WordPress 中?
  • @w3dk 更新了问题(htaccess 部分)
  • @w3dk 通过使用templatemonster.com 指令,我可以确认 mod_rewrite 处于活动状态

标签: wordpress apache .htaccess mod-rewrite url-rewriting


【解决方案1】:

好吧,您在顶级规则中所做的任何事情都会被 WordPress 覆盖:RewriteRule . /index.php [L]

这会将所有内容重写为 /index.php,现有文件和目录除外。

您将不得不对 WordPress 说得非常好,并要求它为您做这件事!如果您不知道该怎么做,我建议您开始另一个关于如何使用 WordPress 执行此操作的问题。

【讨论】:

  • 我同意 (+1) 除非有其他方法可以在 WordPress 中路由 URL? “我假设 WordPress 正在处理原始请求,而不是 REQUEST_URI” - 相当令人困惑的是,REQUEST_URI PHP 变量(即$_SERVER['REQUEST_URI']),而不是REQUEST_URI Apache 变量,是 original请求。在这种情况下,PHP 可能会访问REDIRECT_URL,但我认为 WP 不会?
  • 啊,有趣。我假设不是由于 OP 得到的结果。在这些情况下,通常最好使用您的 CMS,这样内部链接也是正确的。如果 CMS 继续生成旧的 URL,那么让您的好 URL 正常工作并不是什么好事。
  • 我更新了我的答案以删除对REQUEST_URI 的引用,但实际上REDIRECT_URL 也不好。我刚刚尝试过,它还包含原始请求。但无论如何,整个想法毫无意义,无论使用什么都只会包含index.php (SCRIPT_NAME),因为我们正在尝试获取一个不需要从 URL 处理传递的中间重写 URI (并且可能有很多)。使用 WP 是唯一的方法。
  • 是的,我不认为任何 PHP 变量是真正合适/可靠的。然而,在这个特定的实例中(在内部重写之后)$_SERVER['REDIRECT_URL'] 应该包含/type/audio URL (?) - 尽管通常它根本没有设置(它主要用于在触发 Apache ErrorDocument 时读取请求的 URL) .
  • 这是我的 50c,类似于@w3dk 所说的,如果服务器已经处理了任何 wp url,任何后续请求(比如domain.com/type/whatever/)都可以重写为domain.com/whatever/。 PS。我是 htaccess 初学者
猜你喜欢
  • 1970-01-01
  • 2020-11-25
  • 1970-01-01
  • 2013-10-13
  • 1970-01-01
  • 1970-01-01
  • 2015-07-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多