无论出于何种原因,我都无法确定,我的公司已决定使用wordpress进行其中一个网站。他们让我在同一个域上建立一个联盟应用程序,我做了。除了这个困境之外,一切都很好:
wordpress安装在根目录中。所有页面,视频,销售等都是在wordpress页面中制作的。
联盟会员申请位于子目录/ aff /,联盟会员页面可在mydomain.com/aff/index.php?aff=affiliateusername
找到关联公司(及其潜在客户)应该只需输入www.mydomain.com/affiliateusername即可加载他们的网页,但我很难理解如何翻译wordpress htaccess规则来执行此操作。
显然,有这项工作的最佳顺序是wordpress首先确定是否有任何博客/帖子/页面与网址术语FIRST匹配,如果没有找到,则将所有其他内容重定向到www.mydomain的.com / AFF /的index.php?AFF =任何
这是我最终能够提出的适用于索引页面和联盟网页的内容,但是没有正确加载除索引之外的任何wordpress页面。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#RewriteRule ^(images|wp-admin|wp-content|wp-includes|go|compliance\.html)($|/) - [L]
#RewriteRule ^([^/].*)$ /aff/index.php?aff=$1 [R,L]
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
你可以告诉我试图从重写中排除某些目录但是没有成功。我已经通过谷歌阅读其他建议,将重定向规则放在wordpress块之前,但问题很少。当我把这一行放在#BEGIN WordPress行的前面时,我得到一个无限的重定向循环,它继续转到/aff/index.php?aff=aff/index.php?...等等(这是我使用的同一行)对于同一个联盟应用程序在不同的,无文字的域名)
#RewriteRule ^([^/].*)$ http://www.mydomain.com/aff/index.php?aff=$1 [L]
我觉得我错过了一些非常明显的东西。我应该设置wordpress来将所有404重定向到/aff/index.php?aff=originalrequest吗?我该怎么做呢?
提前致谢。
答案 0 :(得分:1)
您错误地使用RewriteRule
代替RewriteCond
s。在WordPress规则之间添加它们肯定会破坏您的博客。将您的.htaccess
代码更改为:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/.]+)$ /aff/index.php?aff=$1 [R=301,QSA,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
如果您希望保留网址mydomain.com/affiliate
,请移除[R]
并仅使用[QSA,L]
。
RewriteCond %{REQUEST_URI} !^/blog\b
从重定向中排除指向/blog
或其子目录/blog/sub/dirs
的所有网址。
.php
页面(即使它们很少),可以通过将规则更改为来更轻松地处理排除
RewriteRule ^([^/.]+)$ /aff/index.php?aff=$1 [R=301,QSA,L]
假设联盟会员名称中永远不会出现.
和/
。