【发布时间】:2014-04-14 14:26:15
【问题描述】:
我正在创建一个 CMS,其中给定页面的样式和格式是根据页面类型(常规、成员、下载等)动态生成的。过去我使用以下 .htaccess 来识别页面类型:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^general/(.*)$ general.php?title=$1 [QSA,L]
效果很好,但需要我为每种页面类型创建一个渲染页面...general.php、member.php、download.php 等。
我想做的是……
通过 .htaccess 有一个通配符来识别页面类型,以使所有页面都从单个 [page.php] 文件呈现,以便可以动态创建页面类型,而无需为每个页面创建呈现页面输入。
我的结果中出现 $ 符号时遇到问题。我只知道 .htaccess 是危险的。
这是我的 PHP 测试
<?php
$type = $_REQUEST['type'];
$title = $_REQUEST['title'];
echo $type.'<br>'.$title;
?>
这个网址:
http://my-site.com/general/this-is-a-general-page
将 .HTACCESS 重写规则设置为:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)/(.*)$ temp.php?type=$1$&title=$2 [QSA,L]
产品:
general$
this-is-a-general-page
我不明白为什么 $ 位于页面类型的末尾。我也试过删除 $:
RewriteRule ^(.*)/(.*) temp.php?type=$1$&title=$2 [QSA,L]
但我得到了相同的结果。
【问题讨论】:
标签: regex apache .htaccess mod-rewrite