【问题标题】:Using .htaccess to rewrite a simple url使用 .htaccess 重写一个简单的 url
【发布时间】:2012-03-26 21:40:39
【问题描述】:

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

【问题讨论】:

标签: php .htaccess mod-rewrite


【解决方案1】:

在您的根目录中创建一个名为 .htaccess 的文件,并将其传递到:

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

(.*) 将采用任何字符 如果您只想使用字母和数字,请将 (.*) 更改为 ([A-Za-z0-9])

【讨论】:

    【解决方案2】:

    启用 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]
    

    【讨论】:

      【解决方案3】:

      删除文件扩展名:

      有两种方法可以做到这一点。只看一个简单的方法 请求,如果请求的文件名不存在,则查找 带有 .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 -> http://davedash.com/2006/07/26/how-to-remove-file-extensions-from-urls/

      【讨论】:

        【解决方案4】:

        1 你应该安装 mod-rewrite

        2 你应该确保你的文档根目录是“AllowOverride All”。普通虚拟主机配置后你应该会发现类似:

        <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>
        

        【讨论】:

          猜你喜欢
          • 2016-09-10
          • 1970-01-01
          • 1970-01-01
          • 2013-09-29
          • 1970-01-01
          • 1970-01-01
          • 2016-12-18
          • 2017-10-06
          • 1970-01-01
          相关资源
          最近更新 更多