【问题标题】:wordpress change to friendly URL with variable using htaccesswordpress 使用 htaccess 更改为带有变量的友好 URL
【发布时间】: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>

【问题讨论】:

    标签: wordpress .htaccess url friendly-url


    【解决方案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 规则之前。
    猜你喜欢
    • 2011-08-23
    • 2014-02-26
    • 2013-03-24
    • 1970-01-01
    • 1970-01-01
    • 2012-06-07
    • 1970-01-01
    • 1970-01-01
    • 2019-11-08
    相关资源
    最近更新 更多