隐藏PHP扩展和使用托管
如何删除PHP扩展和隐藏网址使用htaccess的文件参数从网址上Godaddy的Linux主机 htaccess的GoDaddy的Linux的URL URL参数。隐藏PHP扩展和使用托管
我正在使用此代码。
该代码可用于扩展少网址运作良好(URL没有.PHP)当我使用的url没有键入URL PHP扩展。但是当我在URL中使用.php时,它显示的网址为php扩展。
的事情,我想: -
- ,当我使用的URL与PHP扩展在浏览器中,.PHP将自动从链接中删除。
- 我想这个URL(
ab.example.com/profile.php?user=some_user
)转换为ab.example.com/profile/some_user
,当带参数的用户类型的网址,然后链接也将自动转换为ab.example.com/profile/some_user
- 当URL外观和数据一个多像URL(
ab.example.com/profile.php?user=some_user&ref=23&go=set
)转换成ab.example.com/profile/some_user/23/set
.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。
我用这种方式:
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较长,与你想使用的所有变量。 我希望这会帮助你。
请给我完整的htaccess代码 –
@KunwarAsifAliKhan,我更新了代码 –
请给我完整的htaccess代码 –
@KunwarAsifAliKhan号我不是在这里为你做你的整个工作。无论如何,这是免费的。 –