我是个新手,也是URL重写的初学者.我需要删除菜单链接这些页面的.php扩展。
<ul class="nav">
<li><a href="index.php">Home</a></li>
<li><a href="about.php">About</a></li>
<li><a href="services.php">Services</a></li>
<li><a href="rates.php">Rates</a></li>
<li><a href="contact.php#main">Contact Us</a></li>
</ul>我对.htaccess文件使用了以下代码
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
# Remove .php-extension from url
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^\.]+)/$ $1.php
# End of Apache Rewrite Rules
</IfModule>例如:
localhost/websitename/index.php至
localhost/websitename/index
localhost/websitename/about.php至
localhost/websitename/约
localhost/websitename/services.php至
本地主机/网站名称/服务
localhost/websitename/rates.php至
本地主机/网站名称/费率
localhost/websitename/contact.php#main至
localhost/websitename/联系人-main
但是下面的重写规则显示了如下结果
localhost/websitename/services.php致localhost/services .错误:找不到页面。。。。。所以不停地..。
我做错什么了?如何实现这个简单的URL重写?
发布于 2013-09-20 21:21:06
为了隐藏.php扩展,请用以下代码替换代码:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
## hide .php extension
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php[\s?] [NC]
RewriteRule ^ %1 [R=301,L]
# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/gta/$1.php -f
RewriteRule ^(.+?)/?$ /gta/$1.php [L]发布于 2013-09-20 20:19:43
看起来您只是丢失了磁盘上文件路径的一部分:
RewriteRule ^([^\.]+)$ websitename/$1.phphttps://stackoverflow.com/questions/18925150
复制相似问题