我想使用htaccess和mod_rewrite使用这些样式制作两种类型的URL。
http://www.site.com/product
http://www.site.com/product/1/something
为此,我已将这些行添加到htaccess文件中:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ /index.php?p=$1&id=$2&des=$3 [N]
RewriteRule ^([^/]*)$ /index.php?p=$1 [F]
但每当我运行我的应用程序并提示 http:// localhost / project / 时,Web服务器会将我重定向到 http:// localhost / 。
现在我有两个问题:
答案 0 :(得分:1)
添加 RewriteBase / 应该帮助
将规则更改为
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/?$ /index.php?p=$1&id=$2&des=$3 [N]
RewriteRule ^([^/]*)/?$ /index.php?p=$1 [F]
最终的.htaccess应如下所示:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/?$ /index.php?p=$1&id=$2&des=$3 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/?$ /index.php?p=$1 [L]
答案 1 :(得分:0)
您可能希望摆脱N
和F
标记。不确定为什么你被重定向,它看起来不像你有的规则负责。您还想重复两个规则的两个条件:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ /index.php?p=$1&id=$2&des=$3 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)$ /index.php?p=$1 [L,QSA]