Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 如何在wordpress的.htaccess中添加新的自定义重写?_Apache_Wordpress_.htaccess_Mod Rewrite - Fatal编程技术网

Apache 如何在wordpress的.htaccess中添加新的自定义重写?

Apache 如何在wordpress的.htaccess中添加新的自定义重写?,apache,wordpress,.htaccess,mod-rewrite,Apache,Wordpress,.htaccess,Mod Rewrite,我已经在我的wordpress中添加了一些额外的功能,这样我就可以用一个变量访问它并做额外的事情 问题是,当我在.htaccess文件中将丑陋的动态链接转换为可爱的permlink格式时,wordpress会覆盖/忽略它。我听说有一种方法可以做到这一点,但我根据人们所说的内容尝试的方法仍然会返回404页。我知道文件指向的是工作 ppl所说的两种方式有效,但我对以下两种方式不感兴趣: 1) 在“开始wordpress”部分上方插入规则 2) 在某处使用add\u rewrite\u rule()w

我已经在我的wordpress中添加了一些额外的功能,这样我就可以用一个变量访问它并做额外的事情

问题是,当我在.htaccess文件中将丑陋的动态链接转换为可爱的permlink格式时,wordpress会覆盖/忽略它。我听说有一种方法可以做到这一点,但我根据人们所说的内容尝试的方法仍然会返回404页。我知道文件指向的是工作

ppl所说的两种方式有效,但我对以下两种方式不感兴趣:

1) 在“开始wordpress”部分上方插入规则 2) 在某处使用add\u rewrite\u rule()wordpress函数

有人用这些方法成功过吗?还是其他方法

下面是我的.htaccess文件的外观

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^/ref/(.*)$ /index.php?ref=1&sid=$1 [NC]
</IfModule>


# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]


</IfModule>
没有成功

我也曾尝试过解决方案,但毫无乐趣

请帮忙!:)


有什么想法吗

新规则将始终覆盖旧规则

试试下面的方法

<IfModule mod_rewrite.c>
RewriteEngine On
#wp
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

RewriteRule ^/ref/(.*)$ /index.php?ref=1&sid=$1 [NC]


</IfModule>

重新启动发动机
#可湿性粉剂
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/index.php[L]
重写规则^/ref/(.*)$/index.php?ref=1&sid=1[NC]

在.htaccess文件中,您必须在
重写规则
指令的模式中保留前导斜杠。所以试试这个:

RewriteRule ^ref/(.*)$ index.php?ref=1&sid=$1 [NC]

由于上述解决方案似乎不起作用,我最终在php中完成了以下工作。Wordpress对.htaccess文件的规则是最高的:

if(strstr($_SERVER['REQUEST_URI'], '/ref/')) {

从那以后,我们可以做几乎相同的事情。一个漂亮的url,可以转换成其他内容。

这很有效-我刚刚测试了它-注意,我在重写规则的末尾添加了一个L

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteRule ^/ref/(.*)$ /index.php?ref=1&sid=$1 [NC,L]

#wp
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

重新启动发动机
重写规则^/ref/(.*)$/index.php?ref=1&sid=1[NC,L]
#可湿性粉剂
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/index.php[L]

哪个额外变量是您的?你有没有考虑过检查用户是谁,或者在wordpress中创建一个新选项来代替这个?这很有意义。我在其他地方读到,在Wordpress开始之前需要添加自定义规则。在上面的链接示例中,前面是他们的示例。我刚才试着把它放在下面,但它不喜欢我:(无论如何,谢谢!交叉手指,不抽雪茄,试了一下:|无论如何,谢谢Gumbo。你试过相对路径了吗?@Gumbo,我可以请你看看wordpress自定义字段相关的问题吗-?
<IfModule mod_rewrite.c>
RewriteEngine On

RewriteRule ^/ref/(.*)$ /index.php?ref=1&sid=$1 [NC,L]

#wp
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>