2015-08-16 120 views
2

如何删除PHP扩展和隐藏网址使用htaccess的文件参数从网址上Godaddy的Linux主机 htaccess的GoDaddy的Linux的URL URL参数。隐藏PHP扩展和使用托管

我正在使用此代码。

​​

该代码可用于扩展少网址运作良好(URL没有.PHP)当我使用的url没有键入URL PHP扩展。但是当我在URL中使用.php时,它显示的网址为php扩展

的事情,我想: -

  1. ,当我使用的URL与PHP扩展在浏览器中,.PHP将自动从链接中删除。
  2. 我想这个URL(ab.example.com/profile.php?user=some_user)转换为ab.example.com/profile/some_user,当带参数的用户类型的网址,然后链接也将自动转换为ab.example.com/profile/some_user
  3. 当URL外观和数据一个多像URL(ab.example.com/profile.php?user=some_user&ref=23&go=set)转换成ab.example.com/profile/some_user/23/set

回答

2

.htaccess只处理内部重写URL。您在浏览器中看到的网址不会更改,除非您使用实际的重定向。

做到这一点的一种方法是“如果请求的URL包含.php,删除它并重定向”。这将是(未经测试!)

RewriteCond %{REQUEST_FILENAME} \.php$ 
RewriteRule ^(.*)\.php$ /$1 [QSA,R=301] 

R=301强制浏览器重定向到新的URL,这将出现在浏览器地址栏更新。

这就是说,你应该仔细考虑你的设置。在我的项目中,URL很少匹配真实文件名,而是被重定向到index.php,它根据请求的URL的内容选择如何操作。这对用户没有提供任何关于如何组织我的文件的提示。

编辑:如果你想更高级的编辑,你将不得不在PHP本身做到这一点,并使用它header("Location: ".$new_url_here); - 这将允许您将用户重定向到您选择的规范URL。

+0

请给我完整的htaccess代码 –

+1

@KunwarAsifAliKhan号我不是在这里为你做你的整个工作。无论如何,这是免费的。 –

0

我用这种方式:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^(.*)$ index.php?url=$1 [L,QSA] 
如果运行

的print_r($ _ GET),你会看到$ _GET [ '网址']这将是的index.php后部分,或任何你将使用的文件

我正在使用控制器,或者你可以在profile.php中使用重定向,通过探索参数并根据需要设置路由。

在你的情况

RewriteRule ^(.*)$ profile.php?user=$1 [L,QSA] 

和任何将遵循profile.php被保存在“用户”变量,然后,你需要它,你可以解析它,处理。

编辑:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^(.*)$ profile.php?user=$1 [L,QSA] 

在输入网址的情况下:

http://domain.com/profile/myname/12

你会得到profile.php $ _GET [ '用户'] = 'MYNAME/12';

你可以解析它作为:

$url = explode('/', $_GET['user']); 
$url[0] = 'user'; 
$url[1] = '12'; 

if(!empty($url[0])){ 
//do whatever you want 
} 
... etc 

同样是其中的URL较长,与你想使用的所有变量。 我希望这会帮助你。

+0

请给我完整的htaccess代码 –

+0

@KunwarAsifAliKhan,我更新了代码 –