将重写规则直接添加到.htaccess文件

时间:2021-06-14 作者:shenkwen

我想添加一个简单的重写规则

RewriteRule ^apply\\/? https://docs.google.com/forms/d/e/1FAIpQLSf5IrOhg0E_NAGZnOvMuaXhU80sio8bukaWVBkb87eEOa9kTw/viewform [L]
我的。htaccess文件如下

# BEGIN WordPress
# The directives (lines) between "BEGIN WordPress" and "END WordPress" are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress
如果我将规则添加到此文件的最后一行,它将不起作用。但如果我把它加到后面

RewriteEngine On
它会起作用的。但它会被覆盖。

我不明白为什么这一行在wordpress块之外不能工作。我知道有一个API可以添加重写规则,只是想知道为什么它不能用于学习目的。

1 个回复
SO网友:Fabian Mossberg

正如文件中所说:

“之间的指令(行)”;“开始WordPress”;和;结束WordPress“;是动态生成的,只能通过WordPress过滤器进行修改。这些标记之间对指令的任何更改都将被覆盖。

输入您的代码before #BEGIN WordPressafter # END WordPress.

然而,在[L] 标志表示LAST, 因此,如果该规则成功,将不会运行更多规则。

所以这个规则需要above 这个# BEGIN WordPress

试试这个.htaccess:


# Just to be safe, wrap it in IfModule mod_rewrite.c, so that 
# it does not kick in unless mod rewrite is enabled.
<IfModule mod_rewrite.c>
RewriteRule ^apply\\/? https://docs.google.com/forms/d/e/1FAIpQLSf5IrOhg0E_NAGZnOvMuaXhU80sio8bukaWVBkb87eEOa9kTw/viewform [L]
</IfModule>

# BEGIN WordPress
# The directives (lines) between "BEGIN WordPress" and "END WordPress" are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress
有一个很好的工具可以调试.htaccess 文件名为htaccess tester. 我准备了两个例子:

Why it won\'t work 当您的规则位于包含RewriteRule . /index.php.✅ The fully working example 我在上面发帖。

相关推荐

奇怪的行为:通过访问固定链接设置页面修复了随机的HTTP错误500(语言代码的htaccess问题)

我的网站上有一个非常奇怪的行为,我想解决这个问题。有时(没有可识别的模式),我的网站在头版或一些管理页面上显示一个500错误。当这500个错误出现在头版上时,管理页面仍然可用。我偶然发现了一个解决这个问题的方法:去Permalinks settings page (/wp-admin/options-permalink.php) without submitting anything! 只需转到此页面即可解决此错误。我注意到了options-permalink.php 正在调用此url:https://p