我希望www.example.com/about.php只是www.example.com/about
我创build了一个.htaccess文件,并将其放在我的服务器的根目录下。 我正在使用Linux共享主机。 PHP版本5.2
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^(.*)$ $1.php
看来,这个代码应该正常工作,但由于某种原因,它不。 当我尝试导航到没有.php扩展名的页面时,出现404错误。
这也是我的标记:
<nav> <div class="container"> <ul> <li><a href="index.php" <?php if (strpos($_SERVER['PHP_SELF'], 'index.php')) echo 'class="current-nav"';?>>home</a></li> <li><a href="about.php">about</a></li> <li><a href="services">our services</a></li> <li><a href="portfolio" <?php if (strpos($_SERVER['PHP_SELF'], 'portfolio.php')) echo 'class="current-nav"';?>>portfolio</a></li> <li><a href="testimonials" <?php if (strpos($_SERVER['PHP_SELF'], 'testimonials.php')) echo 'class="current-nav"';?>>testimonials</a></li> <!--<li><a href="#">client area</a></li>--> <li><a href="contact" <?php if (strpos($_SERVER['PHP_SELF'], 'contact.php')) echo 'class="current-nav"';?>>Contact</a></li> <li><a href="order" <?php if (strpos($_SERVER['PHP_SELF'], 'order.php')) echo 'class="current-nav"';?>><strong>Free Quote</strong></a></li> </ul> </div> </nav><!--/navigation-->
你可以看到我尝试在链接中使用PHP扩展,也尝试没有。 与PHP扩展的链接转到页面,但不要删除扩展名。
我做了一个testing,看是否通过放入一些垃圾并返回500错误启用module_rewrite。
使用此代码来隐藏/删除.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} ^[AZ]{3,}\s([^.]+)\.php [NC] RewriteRule ^ %1 [R,L,NC] ## To internally redirect /dir/foo to /dir/foo.php RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^ %{REQUEST_URI}.php [L]
所以经过与谷歌长期回合,我终于想出了这一个。 这与Godaddy共同主办合作。 它删除php文件扩展名,所以http://yoursite.com/about.php成为http://yoursite.com/about
Options -MultiViews RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f #If requested is not a filename... RewriteCond %{REQUEST_FILENAME} !-d #And not a directory RewriteRule ^(.*)$ $1.php [L] # perform this redirect
(在上传到服务器之前删除注释)
我也有这个问题,但我发现这似乎解决了GoDaddy .htaccess问题。
# Fix Rewrite Options -Multiviews # Mod Rewrite Options +FollowSymLinks RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^(.*)$ $1.php
粘贴在我的.htaccess文件的一切为我工作…
## 301 Redirects RewriteCond %{QUERY_STRING} ^$ RewriteRule ^(.*)\.asp$ $1? [R=301,NE,NC,L]
你的重写规则是不正确的,这是错误的。 试试这个:
RewriteRule ^(.*).php$ /$1 [L,R=301]