.htaccess 用于友好的 URL

Posted

技术标签:

【中文标题】.htaccess 用于友好的 URL【英文标题】:.htaccess for friendly URL 【发布时间】:2015-03-04 12:52:29 【问题描述】:

我想为我的一个项目创建一个友好的 URL。目前我的网址是http://example.com/profile.php?user=someprofile,我想把它改成http://example.com/someprofile。我尝试了下面的 htaccess,但我的 CSS 和图像文件没有加载。

RewriteEngine on

RewriteCond $1 !^(profile\.php|assets|editor|css|js|scripts|images|img|media|xml|user_guide|robots\.txt|favicon\.ico)
RewriteRule ^g/([^/\.]+)/?$ profile.php?user=$1 [L]
<Files profile>
    ForceType application/x-httpd-php
</Files>

我如何做到这一点?

【问题讨论】:

为什么你的模式中有^g/ 您的文件指令无关紧要。您不是在处理文件,而是在处理虚拟 url。 可能与***.com/questions/27744603/…有关 @anubhava ^g/ 给了我一个类似example.com/g/someprofile 的结果,我从另一个答案中选择了这个。 【参考方案1】:

这听起来像是相对/绝对 URL 的问题。由于您在 URL 的开头添加了 /g/,这改变了相对 URI 基础,因此您的所有相对链接都将被破坏。您需要将链接更改为绝对链接或将相对 URI 基础添加到页面标题:

<base href="/" />

【讨论】:

【参考方案2】:

让你的 .htaccess 像这样:

RewriteEngine on

# If the request is not for a valid directory
RewriteCond %REQUEST_FILENAME !-d
# If the request is not for a valid file
RewriteCond %REQUEST_FILENAME !-f
RewriteRule ^([^/]+)/?$ profile.php?user=$1 [L,QSA]

css/js/images 路径问题: 最好在 css、js、图像文件中使用绝对路径而不是相对路径。这意味着您必须确保这些文件的路径以 http:// 或斜杠 / 开头。

否则您可以尝试在页面 html&lt;head&gt; 部分添加:&lt;base href="/" /&gt;,以便从该 URL 而非当前页面的 URL 解析每个相对 URL。

【讨论】:

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

Yii2 301 从原始 url 重定向到 .htaccess 中对 SEO 友好的 url 不起作用,需要其他解决方案

友好 URL 的 .htaccess

如何使用 .htaccess 创建友好的 URL?

使用 .htaccess 在 php 中创建友好的 URL [重复]

.htaccess 重写友好的 URL

重定向 seo 友好的 URL (htaccess)