2013-04-16 98 views
0

我知道有很多话题,我尝试了很多次,但它不起作用。在.htaccess文件中隐藏文件扩展名(php)

我想要什么? 代替example.com/en/file.php用户只能看到:example.com/en/file

我的.htaccess:

DirectoryIndex index.php index.html 

RewriteEngine on 
*RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ /$1.php* 


ErrorDocument 404 /index.php 

RewriteCond %{HTTP_HOST} ^example\.com$ [OR] 
RewriteCond %{HTTP_HOST} ^www\.example\.com$ 
RewriteRule ^ru\/index\.php$ "http\:\/\/example\.com\/ru\/" [R=301,L] 

RewriteCond %{HTTP_HOST} ^example\.com$ [OR] 
RewriteCond %{HTTP_HOST} ^www\.example\.com$ 
RewriteRule ^en\/index\.php$ "http\:\/\/example\.com\/en\/" [R=301,L] 

等每种语言

1.我添加了什么来隐藏扩展?

  1. 它工作后应该使用页面之间的链接作为“file.php”或只有“文件”?
+0

检查'RewriteRule'语法 - 这是相反的。第一个是“重写什么”,第二个是“重写的结果” – zerkms

+3

这是我见过的最常见的问题,它不会在发布之前进行搜索 –

+0

这就像黑客攻击,使用简单的PHP框架总是更好。尝试[CodeIgniter](http://ellislab.com/codeigniter)或[CakePHP](http://cakephp.org/)如果你想给它一个镜头:) –

回答

0
DirectoryIndex index.php index.html  

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)$  $1.php  [L,QSA] 

在您的链接中,请勿使用扩展名。

+0

在 上添加:RewriteEngine RewriteRule ^(。+)$ $ 1.php [L] //不起作用:在此服务器上未找到请求的URL/q_insert_city_image。 此外,尝试使用ErrorDocument处理请求时遇到500内部服务器错误错误。 –

+0

我刚编辑的代码 –

+0

未找到 在此服务器上找不到请求的URL/en/things_to_visit。我不明白为什么它不起作用=( –

1

也许是这样的。 修改为适合更具体的模式匹配。

RewriteRule ^(?:(.*)/)?(.*)$ $2.php?lang=$1 

重新写入:

/EN /乐趣=> /fun.php?lang=en

/RU /乐趣=> /fun.php?lang=ru

/fun => /fun.php?lang=

+0

语言没问题..我更喜欢用可见文件夹 –

+0

@ЖеняТест对不起,不清楚你的意思。 – showdev

0

固定加1行:

RewriteEngine on 
**Options -Multiviews** 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)$  $1.php  [L,QSA] 

谢谢! :)

相关问题