用PHP [复制]清洁网址(Clean URLs with PHP [duplicate])

2019-06-24 19:07发布

这个问题已经在这里有一个答案:

  • 如何在PHP中创建友好的网址是什么? 8个回答

所以我想建立一个干净的URL系统PHP来改变这样的URLS http://example.com/index.php?projects=05到: http://example.com/projects/05

到目前为止,我已经想通了如何使用parse_url URL映射看起来像http://example.com/index.php/projects/05但我无法弄清楚如何从删除“的index.php” URL。 有没有办法使用的.htaccess删除方式index.php从URL字符串?

我知道这是种简单的问题,但大量的谷歌搜索后,我无法找到一个解决方案。

Answer 1:

你需要使用mod_rewrite做到这一点在Apache中。 你需要的所有URL重定向到您的index.php,然后,也许用parse_url,找出与他们做。

例如:

# Turn on the rewrite engine
RewriteEngine On

# Only redirect if the request is not for index.php
RewriteCond %{REQUEST_URI} !^/index\.php

# and the request is not for an actual file
RewriteCond %{REQUEST_FILENAME} !-f

# or an actual folder
RewriteCond %{REQUEST_FILENAME} !-d

# finally, rewrite (not redirect) to index.php
RewriteRule .* index.php [L]


Answer 2:

我使用下面的.htaccess文件删除网址的index.php的一部分。

# Turn on URL rewriting
RewriteEngine On

# Installation directory
RewriteBase /

# Protect hidden files from being viewed
<Files .*>
    Order Deny,Allow
    Deny From All
</Files>

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !favicon.ico$

RewriteRule .* index.php/$0 [PT]

否则,我可以推荐Kohana的框架为基准(他们也有一个相当不错的URL解析器和控制系统)



Answer 3:

从URL脱钩的实际文件/文件夹的概念被称为路由 。 许多PHP框架,包括这样的功能,大都采用了mod_rewrite 。 有一个不错的博客文章PHP URL路由实现一个简单的独立路由器类。

它创建这样的映射:

mysite.com/projects/show/1 --> Projects::show(1)

所以在功能请求的URL结果show()之类的Projects被称为,用的参数1

你可以用它来构建漂亮的URL的灵活映射到你的PHP代码。



Answer 4:

像这样的事情在你的.htaccess:

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

(请务必重写模块使能)



文章来源: Clean URLs with PHP [duplicate]