【问题标题】:How to exclude base url from some rewrite rule in htaccess?如何从 htaccess 中的某些重写规则中排除基本 url?
【发布时间】:2015-09-19 19:55:06
【问题描述】:
大家好,我在 .htaccess 文件中有一个重写规则
RewriteRule ^([a-zA-Z0-9\-\_]+)?$ product.php?product=$1 [NC,L]
当我访问 www.domain.com 时,它会应用上述规则并重定向到 product.php,而当我访问 www.domain.com/index.php 时,它可以正常工作。我在哪里做错了。谢谢
【问题讨论】:
标签:
php
regex
apache
.htaccess
mod-rewrite
【解决方案1】:
在您的正则表达式中删除?,这使得整个模式成为可选并从此规则中排除目录:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w-]+)/?$ product.php?product=$1 [QSA,L]
【解决方案2】:
<IfModule mod_rewrite.c>
Options -Indexes
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /your_project_folder_name/index.php/$1 [L]
</IfModule>