Custom Permalink

时间:2016-09-12 作者:Kirby

我正在努力使我的网站example.com/profile/?name=john 可以在更干净的URL中访问,例如example.com/profile/john/.

我让它工作,所以我可以访问$_GET["name"] 但它向我展示了404 页我的永久链接设置为/%postname%/ 我只需要使用$_GET. 配置文件名称与WordPress的关系不像作者。

我想知道是否可以在不返回404 第页,如果是,如何完成。我的当前.htaccess 代码如下:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^profile/([^/]*)/$ /profile/?name=$1 [L]
</IfModule>

# 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

1 个回复
SO网友:Ethan O\'Sullivan

您尝试的自定义规则不符合条件。这是一个漂亮的online .htaccess tester 用于检查重写逻辑的工具。

使用以下命令RewriteRule 而是:

RewriteCond %{QUERY_STRING} (^|&)name=(.*)
RewriteRule ^(.*)$ /profile/%2/? [R=301,L]
确保更换^example\\.com$ 在实际域的第一行。

您还可以将其嵌入<IfModule mod_rewrite.c> WordPress创建的标记,最终结果如下所示:

# 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]
# BEGIN Custom Rules
RewriteCond %{QUERY_STRING} (^|&)name=(.*)
RewriteRule ^(.*)$ /profile/%2/? [R=301,L]
</IfModule>
# END Custom Rules
# END WordPress