wordpress 使用 htaccess 更改为带有变量的友好 URL

Posted

技术标签:

【中文标题】wordpress 使用 htaccess 更改为带有变量的友好 URL【英文标题】:wordpress change to friendly URL with variable using htaccess 【发布时间】:2013-08-22 00:19:42 【问题描述】:

我有一个带有页面模板和 1 个变量 call uid (user id) 的 wordpress 网站,我想将其更改为友好的 url。

来自

http://localhost/forum/edit-profile/?uid=1

http://localhost/forum/edit-profile/1

http://localhost/forum/edit-profile/uid/1

P/S:wordpress 已经有一个 .htaccess 文件,我只是想添加一些额外的代码。

我尝试了这些解决方案,但它们不起作用:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /forumengine/
RewriteRule ^index\.php$ - [L]
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule . /forumengine/index.php [L]

RewrieCond %QUERY_STRING !no-redir [NC]
RewrieCond %QUERY_STRING uid=([^&]+) [NC]
RewriteRule ^(.*/edit-profile)/$ $1/%1 [R=301,NC,L]

RewriteCond %REQUEST_FILENAME !-d # not a dir
RewriteCond %REQUEST_FILENAME !-f # not a file
RewriteRule ^(.*/edit-profile)/(\d+)$ $1/?uid=$2&no-redir [NC,QSA,L]
</IfModule>

【问题讨论】:

【参考方案1】:

将此添加到您的 .htaccess 规则中

RewrieCond %QUERY_STRING !no-redir [NC]
RewrieCond %QUERY_STRING uid=([^&]+) [NC]
RewriteRule ^(.*/edit-profile)/$ $1/%1 [R=301,NC,L]

RewriteCond %REQUEST_FILENAME !-d # not a dir
RewriteCond %REQUEST_FILENAME !-f # not a file
RewriteRule ^(.*/edit-profile)/(\d+)$ $1/?uid=$2&no-redir [NC,QSA,L]

这会将/forum/edit-profile/?uid=1 重定向到/forum/edit-profile/1 并返回。

编辑:(使用 wordpress 规则,他们应该像这样)

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /forumengine/

  RewriteRule ^index\.php$ - [L]

  RewrieCond %QUERY_STRING !no-redir [NC]
  RewrieCond %QUERY_STRING uid=([^&]+) [NC]
  RewriteRule ^(.*/edit-profile)/$ $1/%1 [R=301,NC,L]

  RewriteCond %REQUEST_FILENAME !-d # not a dir
  RewriteCond %REQUEST_FILENAME !-f # not a file
  RewriteRule ^(.*/edit-profile)/(\d+)$ $1/?uid=$2&no-redir [NC,QSA,L]

  RewriteCond %REQUEST_FILENAME !-f
  RewriteCond %REQUEST_FILENAME !-d
  RewriteRule . /forumengine/index.php [L]
</IfModule>

【讨论】:

它不起作用我的意思是从 /forum/edit-profile/?uid=1 到 /forum/edit-profile/1。谢谢这是 .htaccess 文件中的代码# BEGIN WordPress &lt;IfModule mod_rewrite.c&gt; RewriteEngine On RewriteBase /forumengine/ RewriteRule ^index\.php$ - [L] RewriteCond %REQUEST_FILENAME !-f RewriteCond %REQUEST_FILENAME !-d RewriteRule . /forumengine/index.php [L] RewriteRule ^(.*/edit-profile)/(\d+)$ $1/?uid=$2 [NC,QSA,L] &lt;/IfModule&gt; # END WordPress @NTThái 您的自定义规则应位于 WordPress 规则之前。

以上是关于wordpress 使用 htaccess 更改为带有变量的友好 URL的主要内容,如果未能解决你的问题,请参考以下文章

使用.htaccess在Localhost上的WordPress

apache_conf 使用这些.htaccess添加更安全的WordPress

apache_conf 使用这些.htaccess添加更安全的WordPress

apache_conf 使用这些.htaccess添加更安全的WordPress

只有默认永久链接工作wordpress其他成为404错误

Wordpress中的固定链接 - 找不到页面