2012-12-10 87 views
2

我只是找不到我需要的正确解决方案,所以我希望有人能够帮助我。htaccess RewriteRule * .php到/ */

我现在有网站,此文件:

/admin/ 
/images/ 
/js/ 
about.php 
index.php 
news.php 
questions.php 

所以我的网址现在: www.mydomain.com/about.php www.mydomain.com/news.php ...

我想有www.mydomain.com/about/,www.mydomain.com/news/...

我已经尝试了很多东西,我发现,但没有他们的工作像它应该或它会搅乱别的东西。

我到这是最接近:

RewriteRule about/ about.php 
RewriteRule about about.php 

但是,这也打乱了,如果我使用一些图像中包含的代码名称有关(例如图像/约-me.jpg) - 可能是因为第二条语句的。

回答

2

启用mod_rewrite的,并通过httpd.conf的.htaccess,然后把这个代码在你.htaccessDOCUMENT_ROOT目录:

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 [NC] 
RewriteRule^%1 [R,L,NC] 

## To internally forward /dir/foo to /dir/foo.php 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule^%{REQUEST_FILENAME}.php [L] 
1

为了让生活更简单我就会停止使用基于目录的URL

/约/

并使用更简单的文件库URL

/约

额外的斜杠将页面移动到子目录中,并且页面中的所有相对引用都会中断。

或者,您可以更改所有链接,包含图片和网址以确保它们都与域的根目录相关。您通过在URL之前始终包含斜线(/)或使其成为完整URL来实现此目的。

,使您的规则更具体:

重写规则^ /约ab​​out.php $

这些额外^ $表示开始和结束所以它必须是完全匹配的。

0

这个工作对我来说

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(about)$ about.php