【问题标题】:Understanding .htaccess了解 .htaccess
【发布时间】:2011-08-21 23:40:00
【问题描述】:

我正在尝试使用 .htaccess 更改我的 url 类型,但我遇到了一些问题。我尝试了一些在线工具,但它们甚至不适合我。所以这就是我想要做的事情;

我有像http://mydomain.com/profile.php?u=newuser 这样的页面,我想这样制作:http://mydomain.com/newuser 但到目前为止我无法实现。

这也是我尝试过的;

Options +FollowSymLinks
RewriteEngine on

RewriteRule (.*) profile.php?u=$1

在 .htaccess 中进行更改后,我是否还必须对我的 php 文件进行任何更改?另外,当我尝试打开http://mydomain.com/newuser 时,我注意到页面上的一些图像消失了,这是什么原因?非常感谢你们!

【问题讨论】:

  • 您是否尝试将 as / 放在 (.*) 之前?你还需要比你更具体。

标签: php apache .htaccess url-rewriting


【解决方案1】:

您已经取得了很大进展,但现在您正在将域中所有可能的 url 重写为 profile.php,例如 /images/logo.jpg 之类的内容。

问题是,你想用这个做什么?一种简单的方法是将其更改为:

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) profile.php?u=$1

添加的“RewriteCond”会导致重写引擎重写服务器上不存在的 url,因此您的图像会正常显示。

就个人而言,我认为在所有个人资料网址中添加 /profile/ 前缀可能会更好:

Options +FollowSymLinks
RewriteEngine on
RewriteRule profile/(.*) profile.php?u=$1

这将允许您在将来添加新的重写规则,如果您需要它们;如果您的某个用户决定使用名为“profile.php”的用户名或与服务器上现有 URL 冲突的任何其他用户名,它也不会给您带来任何问题。

【讨论】:

  • 有没有办法摆脱domainname.com/username这种结构导致的问题?
  • 好吧,我的第一个示例只重写了不存在的 url,所以应该可以解决问题。
【解决方案2】:

这是因为您将每个请求都发送到 profile.php (.*)。这将影响对图像、资源等的所有请求。

在您的规则上方添加此行以排除“真实​​”资源:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

【讨论】:

    猜你喜欢
    • 2016-01-08
    • 2016-08-26
    • 2019-08-30
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    • 2015-07-09
    • 2012-09-06
    • 1970-01-01
    相关资源
    最近更新 更多