0

在我现有的 wordpress 站点中,我有一个页面设置,其中包含特定页面的自定义模板文件。根据 slug /at/ 重写此页面的 Wordpress 永久链接

然后我们使用一些额外的变量来获取这个页面上的不同数据

http://websitename.com/at/?h=s3fgh

现在想用 htaccess 将这个 url 重写为这样的东西

http://websitename.com/at/s3fgh

但似乎无法使其工作。目前我试图修改 htaccess 文件但没有首选结果

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule ^at/([a-zA-Z0-9_-]+)/?$  /index.php?page_id=113&h=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

其中 113 等于特定的页面 id

4

1 回答 1

1

您可以尝试用这个替换问题中的完整规则集:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# Add this line
RewriteCond %{REQUEST_URI}   !/at/  [NC]

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

# /at/ folder rule
RewriteCond %{REQUEST_URI}   !index\.php                [NC]
RewriteRule ^at/([^/]+)/?   /index.php?page_id=113&h=$1 [NC,L]

最后一条规则静默映射此请求的 URL:

http://websitename.com/at/anything

对此,根据问题中的规则:

http://websitename.com/index.php?page_id=113&h=anything

选项

此选项是必需的,因为问题说明了一件事,而同一问题 ( ? ) 中包含的规则显示了另一件事。这次让我们坚持问题中的示例。

将上述规则集中的最后 3 行替换为以下行:

# /at/ folder rule
RewriteCond %{QUERY_STRING} !h=        [NC]
RewriteRule ^at/([^/]+)/?   /at/?h=$1  [NC,L]

静默映射此请求的 URL:

http://websitename.com/at/anything

对此,根据问题中的 URL 示例:

http://websitename.com/at/?h=anything

于 2013-03-24T08:26:06.127 回答