2

我已经创建了一个规则,允许用户传递这样的变量: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
4

1 回答 1

1

你的对我来说看起来不错,但试试:RewriteRule ^/?([0-9]+)/?$ /database/?db_index=$1 [R=301]

于 2012-07-06T14:00:50.987 回答