重写自定义CMS的规则

时间:2014-07-29 22:06:21

标签: php .htaccess

我正在为客户构建自定义CMS,而我却陷入了.htaccess中的重写规则。我正在尝试重写任何内容到page /?pid = xxx - 所以,例如,/ about成为page / pid = 123。

我认为我遇到的问题有两个:我暂时在一个子目录中构建这个站点(/ clients / afsb),并且我还有一个现有的重写规则来删除。 php来自文件扩展名。另一个可能的问题是,我希望能够让重写规则忽略任何实际存在的文件 - 例如,主页位于index.php(或者只是/,在这种情况下),我不会希望规则影响那个。同样地,我还有另外两个非动态的页面(例如,/ contact。)这是我在.htaccess暂时尝试的内容:

<Files php.ini> 
  order allow,deny 
  deny from all 
</Files>

Options +FollowSymLinks

RewriteEngine On
RewriteBase /clients/afsb

# Redirect to remove .php 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php

# Redirect to "page" for dynamic pages
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*)/$ page?&pid=$1

<Files ~ "\.inc$">
  Order allow,deny
  Deny from all
</Files>

我显然对.htaccess或一般的正则表达不太强,所以我很欣赏你能给出的任何方向。谢谢!

1 个答案:

答案 0 :(得分:0)

想出来,这就是我所需要的 - 我错过了插入符号。感谢他们两人的调查。

# Redirect to remove .php 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php

# Redirect to "page" for dynamic pages
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ page?pid=$1 [L]