我正在为客户构建自定义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或一般的正则表达不太强,所以我很欣赏你能给出的任何方向。谢谢!
答案 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]