Php 使用.htaccess重写简单url

Php 使用.htaccess重写简单url,php,.htaccess,mod-rewrite,Php,.htaccess,Mod Rewrite,我有一个像这样的url-www.example.com/blog.php/username,它会把你带到用户名的博客页面,但是我想用一个像这样的url-www.example.com/blog/username来访问同一个文件(blog.php)。请问我需要采取什么步骤来实现这一目标?感谢您的帮助。在根目录中创建一个名为.htaccess的文件,并在以下位置通过该文件: <IfModule mod_rewrite.c> RewriteEngine on Rewrite

我有一个像这样的url-www.example.com/blog.php/username,它会把你带到用户名的博客页面,但是我想用一个像这样的url-www.example.com/blog/username来访问同一个文件(blog.php)。请问我需要采取什么步骤来实现这一目标?感谢您的帮助。

在根目录中创建一个名为.htaccess的文件,并在以下位置通过该文件:

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

重新启动发动机
重写规则^blog/(*)$yourpage.php?用户名=$1[L]
(*)将使用任何字符
如果只想使用字母和数字,请通过
([A-Za-z0-9])更改
(.*)
,删除文件扩展名:

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

现在,如果转到:服务器将解释为 如果你去的话

有道理,但如果我们已经打破了URL和 和文件名,我们不妨聪明地打破它。改变这个 .htaccess文件:


来源:Dave Dash->

1您应该安装mod rewrite

2您应该确保您的文档根目录为“AllowOverride All”。在完成virtualhost配置后,您应该会发现以下内容:

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

允许超越所有
3之后,您应该启动重写引擎,并按照David Bélanger的建议在.htaccess中创建重写规则:

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

重新启动发动机
重写规则^blog/(*)$blog.php/$1[L]

启用mod_rewrite和.htacess。然后将此代码添加到文档根目录下的.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]

你在使用什么框架?网站搜索有什么问题?可能是重复的
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule     ^blog/(.*)$     blog.php/$1 [L]
</IfModule>
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]