使用.htaccess重写一个简单的url

时间:2012-03-26 13:17:12

标签: php .htaccess mod-rewrite

我有这样的网址 - www.example.com/blog.php/username,它会将您带到用户名的博客页面,但我想使用这样的网址 - www.example.com/blog / username来到同一个文件(blog.php)。请为实现这一目标需要采取哪些步骤?谢谢你的帮助。

4 个答案:

答案 0 :(得分:4)

在名为.htaccess的根目录中创建一个文件,然后在以下文件中输入:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule     ^blog/(.*)$     yourpage.php?username=$1 [L]
</IfModule>

(。*)将采用任何字符 如果您只想使用字母和数字,请(.*)

更改([A-Za-z0-9])

答案 1 :(得分:3)

启用mod_rewrite和.htacess。然后在DOCUMENT_ROOT:

下的.htaccess中添加此代码
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

# 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
# If the request is not for a valid link
RewriteCond %{REQUEST_FILENAME} !-l
# finally this is your rewrite rule
RewriteRule ^blog/(.+)$ blog.php/$1 [L,NC]

答案 2 :(得分:1)

删除文件扩展名:

  

有两种方法可以做到这一点。简单的方法只是看一个   请求,如果请求的文件名不存在,则查找   带有.php(或.asp或其他)扩展名的文件名。在一个   .htaccess文件:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ $1.php [L,QSA]
  

现在,如果您转到:http://domain/about,服务器会将其解释为   如果你去了http://domain/about.php

     

有道理,但如果我们已经打破了URL之间的关系   和文件名,我们也可以聪明地打破它。改变这一点   .htaccess文件:

 RewriteEngine On
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

来源:Dave Dash - &gt; http://davedash.com/2006/07/26/how-to-remove-file-extensions-from-urls/

答案 3 :(得分:1)

1你应该安装mod-rewrite

2您应该确保您的doc根目录是“AllowOverride All”。普通的虚拟主机配置之后你应该找到类似的东西:

<Directory "/your/doc/root/path/">
    AllowOverride All
</Directory>

3之后,您应该开始重写引擎并在.htaccess中创建重写规则,正如DavidBélanger所建议的那样:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule     ^blog/(.*)$     blog.php/$1 [L]
</IfModule>