2011-10-08 51 views
1

如果我的网址是http://www.xyz.com/index.php?view=abc 那么它应该打开 http://www.xyz.com/abc.php使用URL重写的.htaccess,查询字符串作为文件名

我应该在.htaccess写?

在此先感谢。

+1

? 'index.php?view = abc'(这是正常重写的异常)或'abc.php'?你问的方式并没有说清楚你的用户会看到哪些。 –

+0

实际上我想如果用户将打开index.php?view = abc,那么abc.php将被执行。如果用户直接输入abc.php,则他/她无法打开该页面。用户必须通过index.php?view = abc来访问它。 – user985361

回答

2

如果我的网址是http://www.xyz.com/index.php?view=abc那么它应该打开http://www.xyz.com/abc.php

你不需要为的.htaccess,只是把index.php文件

$view = $_GET['view']; 
if (strpos($view, '/') === false && $view != "index" && file_exists("$view.php")) 
    require "$view.php"; 

一定不要有任何其他脆弱的PHP文件在你的根目录(但我建议使用其他/更好的技术来检查URL的用户输入)。


如果你想有重写倒过来,您可以.htaccess类似于此:

RewriteEngine on 

RewriteCond %{REQUEST_URI} !^/index.php 
RewriteRule ^([a-z]+).php$ /index.php?view=$1 [L] 
你要哪您的最终用户键入他们的浏览器
+0

谢谢。 Czechnology。 它的工作原理。 但如果我需要反向情况。如果某个类型的URL类似于 www.xyz.com/login.php,那么它应该重定向到, www.xyz.com/index.php?view=login – user985361

+1

@ user985361,这不正是我的答案的第二部分? – Czechnology