目录中的友好 URL

Posted

技术标签:

【中文标题】目录中的友好 URL【英文标题】:Friendly URL within a directory 【发布时间】:2015-06-02 15:20:34 【问题描述】:

我在域和目录中安装了 Wordpress,我有一个使用 php+mysql 开发的网站,完全独立于 wordpress。它单独工作。本站是后台,所以安装在 /backoffice/ 目录下。

后台的一个目录我有另一个目录,我希望它与友好的 URL 一起使用。

在我的 .htaccess 中,我有以下规则:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteRule ^backoffice/edit_user/([^/\.]+)/?$ /backoffice/edit_user/index.php?o=$1 [L,NC,QSA]


RewriteRule ^index\.php$ - [L]
RewriteCond %REQUEST_URI !=/server-status
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule . /index.php [L]
RewriteRule ^login/?$ wp-login.php [QSA,L]
RewriteRule ^postpass/?$ wp-login.php?action=postpass [QSA,L]
RewriteRule ^logout/?$ wp-login.php?action=logout [QSA,L]
RewriteRule ^lostpassword/?$ wp-login.php?action=lostpassword [QSA,L]
RewriteRule ^retrievepassword/?$ wp-login.php?action=retrievepassword [QSA,L]
RewriteRule ^resetpass/?$ wp-login.php?action=resetpass [QSA,L]
RewriteRule ^rp/?$ wp-login.php?action=rp [QSA,L]
RewriteRule ^register/?$ wp-login.php?action=register [QSA,L]

当调用像这样的网址时:mydomain.com/backoffice/edit_user/joseatonio 404 页面出现。

怎么了?

提前致谢。

【问题讨论】:

发布您所有由 wp 生成的 .htaccess-es。根目录中的 .htaccess 子目录中的 .htaccess 【参考方案1】:

就像在this answer 中一样 - 您可以调试您的 Apache 重写。在您的虚拟主机服务器配置中打开RewriteLog

RewriteEngine On
RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 3

然后你会看到什么规则使它重定向 404。

【讨论】:

【参考方案2】:

终于找到解决办法了:

这是与wordpress结合使用的代码:

     <IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteRule ^index\.php$ - [L]

**RewriteRule ^backoffice/edit_user/([^/\.]+)/?$ /backoffice/edit_user/index.php?o=$1 [L,NC,QSA]**

    RewriteCond %REQUEST_URI !=/server-status
    RewriteCond %REQUEST_FILENAME !-f
    RewriteCond %REQUEST_FILENAME !-d
    RewriteRule . /index.php [L]
    RewriteRule ^login/?$ wp-login.php [QSA,L]
    RewriteRule ^postpass/?$ wp-login.php?action=postpass [QSA,L]
    RewriteRule ^logout/?$ wp-login.php?action=logout [QSA,L]
    RewriteRule ^lostpassword/?$ wp-login.php?action=lostpassword [QSA,L]
    RewriteRule ^retrievepassword/?$ wp-login.php?action=retrievepassword [QSA,L]
    RewriteRule ^resetpass/?$ wp-login.php?action=resetpass [QSA,L]
    RewriteRule ^rp/?$ wp-login.php?action=rp [QSA,L]
    RewriteRule ^register/?$ wp-login.php?action=register [QSA,L]

如您所见,我在 index.php 规则之后更改了规则的位置,可以正常工作,在任何其他位置都不起作用。

【讨论】:

【参考方案3】:

您可以尝试在 /backoffice/ 文件夹中使用自己的 .htaccess

RewriteBase /backoffice/
# all the backofice rules

【讨论】:

以上是关于目录中的友好 URL的主要内容,如果未能解决你的问题,请参考以下文章

在 ASP.NET 中使用带有友好 URL 的 Response.Redirect

ASP.NET 友好 URL 和 default.aspx

.htaccess 搜索引擎和用户友好的 URL

如何使用 IIS URL 重写排除目录?

codeigniter 中的友好 url,带有 url 中的变量

省略 Liferay 友好 URL 中的减号“-”