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 <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] RewriteRule ^(.*/edit-profile)/(\d+)$ $1/?uid=$2 [NC,QSA,L] </IfModule> # END WordPress
@NTThái 您的自定义规则应位于 WordPress 规则之前。以上是关于wordpress 使用 htaccess 更改为带有变量的友好 URL的主要内容,如果未能解决你的问题,请参考以下文章
使用.htaccess在Localhost上的WordPress
apache_conf 使用这些.htaccess添加更安全的WordPress
apache_conf 使用这些.htaccess添加更安全的WordPress