Mod_Rewrite来清理URL

时间:2015-03-27 23:24:14

标签: php .htaccess mod-rewrite

我正在尝试创建一个WordPress风格的URL系统,我可以让用户创建一个页面,自动创建它的“slug”版本。

我将使用index.php来查询数据库以使slug与页面匹配。

我曾尝试复制部分WordPress'.htaccess,但显示404错误。

我的网址格式类似于以下内容:

www.mysite.com/about
www.mysite.com/rentals/page1

我的.htaccess文件如下:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

一旦我解决了htaccess部分,我如何从URL中删除slug?我想,即使URL是干净的,它仍然可以通过index.php?page=[SLUG]

发送

关于从哪里开始以及如何完成我正在寻找的任何想法?

1 个答案:

答案 0 :(得分:1)

我正在使用以下内容......

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

我使用$_SERVER['REDIRECT_URL']获取路径/页面名称。

示例... index.php / about

$request = strip_tags(trim($_SERVER['REDIRECT_URL']));
$request = rtrim($request, "/"); // remove trailing slash 
$pg = explode('/', $request);
$page = $pg['1'];
// SELECT FROM table WHERE page = $page;