.HTACCESS url rewrite-4个简单的重写规则不起作用(GoDaddy+;WordPress)
我想知道我的重写规则是否不正确,因为它们不适用于我的Godaddy共享服务器? 我有四个非常基本的.htaccess URL重写规则。 每当用户键入/单击链接时:.HTACCESS url rewrite-4个简单的重写规则不起作用(GoDaddy+;WordPress),wordpress,apache,.htaccess,mod-rewrite,url-rewriting,Wordpress,Apache,.htaccess,Mod Rewrite,Url Rewriting,我想知道我的重写规则是否不正确,因为它们不适用于我的Godaddy共享服务器? 我有四个非常基本的.htaccess URL重写规则。 每当用户键入/单击链接时: 漂亮的SEO(理想)链接http://www.electriccarlos.com/albums/ 实际上是http://www.electriccarlos.com/type/audio/ 漂亮的SEO(理想)链接http://www.electriccarlos.com/discography/ 实际上是http://www.el
http://www.electriccarlos.com/albums/
实际上是
http://www.electriccarlos.com/type/audio/
http://www.electriccarlos.com/discography/
实际上是
http://www.electriccarlos.com/type/audio/
http://www.electriccarlos.com/gallery/
实际上是
http://www.electriccarlos.com/type/gallery/
http://www.electriccarlos.com/videos/
实际上是
http://www.electriccarlos.com/type/video/
.htaccess文件:
#开始奥马尔·尤维拉
重新启动发动机
#相册
重写规则^albums/?$type/audio/[NC,L]
重写规则^discography/?$type/audio/[NC,L]
#画廊
重写规则^gallery/?$type/gallery/[NC,L]
#录像带
重写规则^videos/?$type/video/[NC,L]
#结束奥马尔尤维拉
#开始WordPress
重新启动发动机
重写基/
重写规则^index\.php$-[L]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/index.php[L]
#结束WordPress
.htaccess
文件已正确配置,并且重定向匹配
处于活动状态 好吧,你在顶级规则中所做的任何事情都会被WordPress:RewriteRule覆盖/index.php[L]
它将所有内容重写为/index.php
,现有文件和目录除外
你必须对WordPress说得很好,并要求它为你做这件事!如果你不知道怎么做,我建议你再问一个关于如何用WordPress做到这一点的问题。好吧,你在你的首要规则中所做的任何事情都会被WordPress:
重写规则所覆盖/index.php[L]
它将所有内容重写为/index.php
,现有文件和目录除外
你必须对WordPress说得很好,并要求它为你做这件事!如果您不知道如何使用WordPress,我建议您再问一个问题。您是否确认mod_rewrite已启用/正在工作
RedirectMatch
是一个mod_别名指令(默认情况下启用)。你也不应该混合重定向/重写两个模块。我正在运行WordPress。这是重定向工作啊,如果你有WP,你有其他指令吗?您将这些指令放在哪里?我们可能需要查看您的整个.htaccess
文件。这些页面是否在WordPress中?@w3dk使用说明更新了问题(htaccess部分)@w3dk,我可以确认mod_rewrite处于活动状态。您确认mod_rewrite处于启用/工作状态了吗RedirectMatch
是一个mod_别名指令(默认情况下启用)。你也不应该混合重定向/重写两个模块。我正在运行WordPress。这是重定向工作啊,如果你有WP,你有其他指令吗?您将这些指令放在哪里?我们可能需要查看您的整个.htaccess
文件。这些页面是否在WordPress中?@w3dk更新了问题(htaccess部分)@w3dk通过使用说明,我可以确认mod_rewrite处于活动状态我同意(+1),除非有其他方法在WordPress中路由URL?“我假设WordPress正在处理原始请求,而不是请求URI”-令人困惑的是,request\u URI
PHP变量(即$\u SERVER['request\u URI']
)是原始请求,而不是request\u URI
Apache变量。在这种情况下,PHP可能会访问重定向\u URL
,但我认为WP不会这样做?啊,很有趣。我想不是因为OP得到的结果。在这些情况下,通常最好使用CMS,这样内部链接也就正确了。如果CMS继续生成旧的URL,那么让你的好URL正常工作就没什么好处了。我更新了答案,删除了对请求URI
的引用,但实际上重定向URL
也不好。我刚刚试过,它还包含原始请求。但是无论如何,整个想法都没有意义,无论使用什么,都只会包含index.php
(SCRIPT\u NAME
),因为我们试图获取一个中间重写的URI,它不需要从URL处理中传递(可能有很多)。使用WP是唯一的方法。是的,我不认为任何PHP变量是真正合适/可靠的。然而,在这个特定的实例中(内部重写之后)$\u服务器['REDIRECT\u URL']
应该包含/type/audio
URL(?)——尽管通常它根本没有设置(它主要用于在触发Apache ErrorDocument时读取请求的URL)。这是我的50c技巧,类似于@w3dk所说的,如果服务器已经处理了任何wp url,则任何以下请求(例如domain.com/type/whatever/
)都可以重写为domain.com/whatever/
。注:我是htaccess Beguinner,我同意(+1),除非有其他方法在WordPress中路由URL?“我假设WordPress正在处理原始请求,而不是请求URI”-令人困惑的是,request\u URI
PHP变量(即$\u SERVER['request\u URI']
)是原始请求,而不是request\u URI
Apache变量。在这种情况下,PHP可能会访问重定向\u URL
,但我认为WP不会这样做?啊,很有趣。我想不是因为手术的结果
# 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