我已经创建了一条规则,允许用户传递如下变量: somepage.com/database/12345 ,内部将其更改为 somepage.com/database/?db_index=12345 ,它工作正常。代码如下所示:
RewriteBase /
RewriteRule ^database/([0-9]+)/?$ /database/?db_index=$1
现在我需要完全相同,但不需要在变量之前传递“database /”。因此用户可以像这样传递变量: somepage.com/12345 。它必须是一个额外的选项,而不是前一个选项的替代品。我试着这样做:
RewriteRule ^([0-9]+)/?$ /database/?db_index=$1 [L]
但我无法让这个工作,我不知道为什么。上面的附加代码直接插入到上一个工作规则之前。
对于我的方法不起作用的任何帮助和解释,我会非常高兴。
更新:整个.htaccess文件如下所示:
# Block the include-only files.
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
# direct url rewrite
RewriteEngine On
RewriteBase /
RewriteRule ^([0-9]+)/?$ /database/?db_index=$1 [L]
RewriteRule ^database/([0-9]+)/?$ /database/?db_index=$1
# 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
答案 0 :(得分:1)
你的看起来很好,但请尝试:RewriteRule ^/?([0-9]+)/?$ /database/?db_index=$1 [R=301]