【问题标题】:.htaccess vanity urls and clean urls together.htaccess 虚 url 和干净 url 一起
【发布时间】:2014-11-10 06:57:53
【问题描述】:

我已经能够设置 .htaccess 以在我的网站上启用虚 URL。但是,当我尝试清理我网站上的其他网址时遇到了问题。我会在下面给出场景和我当前的 .htaccess:

目前 wwww.mywebsite.com/john 重定向到 profile.php?user=john。在 profile.php 中,我检查用户 john 是否存在于我的数据库中,如果为 false 我重定向到自定义 404.php 页面。这工作得很好。当我尝试将 wwww.mywebsite.com/photo/abcdefg 解释为 www.mywebsite.com/photo.php?m=abcdefg 时,问题就出现了。出于某种原因,它认为照片是用户的名字,然后将其重写,就好像它是一个虚荣的 url。请在下面查看我的 .htaccess 文件代码:

ErrorDocument 404 http://www.mywebsite.com/404

RewriteEngine on
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [NC]
RewriteRule ^([^\.]+)$ profile.php?username=$1 [L]
RewriteCond %{HTTP_HOST} ^(.*)$ [NC]
RewriteCond %{HTTP_HOST} !^(.*)\.(.*)\. [NC]
RewriteRule ^ HTTP%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

【问题讨论】:

  • 您应该有 www.mywebsite.com/profile/johnwww.mywebsite.com/photo/m 类型的虚 URL。

标签: .htaccess


【解决方案1】:

您需要在任何内部路由之前进行重定向。然后,您需要明确匹配/photo,然后再路由到配置文件并更改.php -f

ErrorDocument 404 http://www.mywebsite.com/404

RewriteEngine on

RewriteCond %{HTTP_HOST} ^(.*)$ [NC]
RewriteCond %{HTTP_HOST} !^(.*)\.(.*)\. [NC]
RewriteRule ^ HTTP%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteRule ^photo/(.+)$ /photo.php?m=$1 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^([^\.]+)$ /$1.php [L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ /profile.php?username=$1 [L]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-06
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    • 2013-07-04
    • 2014-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多