我试图找到一个我心中的问题的答案,但似乎我找不到它。
如何用“?”创建一些php网址?和“=”到/
示例一(1):
example.com/user.php?profile=example
为:
example.com/user/profile/example
示例二(2):
example.com/forum.php?thread=example-in-an-example
为:
example.com/forum/thread/example-in-an-example
就像将第二个“/”(斜杠)作为“?”的代码第三个和其余的作为“=”所以我可以自由地使用它而不是为每个页面制作一个新的...
LIKE:/ forum(或任何其他人)就像页面本身一样 AND:/ thread(或任何其他)就像$ _GET一样 AND:/ example-in-an-example(或任何其他)类似于$ _GET
的值EXTRA: 这是来自Jeroen的代码:
RewriteRule ^(.*)/(.*)/(.*)/$ $1.php?$2=$3 [L]
问题一(1):当喜欢:“example.com/forum”或“example.com/user”时出现404错误 问题二(2):当使用像“example.com/forum/thread/test-thread/reply/2”这样的链接时,它会产生404错误,(在第一次真实之后,用“&”和“=”循环)一个,所以它能够使用多个$ _GET)
答案 0 :(得分:4)
将此添加到.htaccess文件中:
RewriteEngine On
RewriteRule ^user/profile/(.*)/$ user.php?profile=$1 [L]
RewriteRule ^forum/thread/(.*)/$ /forum.php?thread=$1 [L]
或更通用的版本......
RewriteEngine On
RewriteRule ^(.*)/(.*)/(.*)/$ $1.php?$2=$3 [L]
确保Apache的mod rewrite已启用!
答案 1 :(得分:1)
如果您具有对应用程序的完全访问权限并且您可以修改代码,我可以向您提交我通常用于REST实用程序的一些技巧。
在您的apache配置中放置 AllowOverride All 以启用.htaccess文件。 确保 LoadModule mod_rewrite 模块。
在您的Web服务器文档根目录(您的应用程序路径)中创建一个.htaccess文件并将其放入:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
创建一个名为index.php的文件并将其放入其中,这将是您的控制器:
<?
// echo "REQUEST_URI: " . $_SERVER['REQUEST_URI'] . "</br>\n";
$controller = explode("/", $_SERVER['REQUEST_URI']);
//print_r($controller);
$resource = $controller[1];
$operation = $controller[2];
$operation_value = $controller[3];
echo "Requested resource: $resource, opetation: $operation, value: $operation_value<br>\n";
switch($resource) {
case 'user':
echo "User requested\n";
//require_once("user.php");
break;
case 'forum':
echo "Forum requested\n";
//require_once("forum.php");
break;
/* add any other resource */
default:
echo "Requested page was not found.\n";
break;
}
?>
当用户致电http://example.com/user/profile/ZeroXitreo时,页面将呈现为:
Requested resource: user, opetation: profile, value: ZeroXitreo
User requested
当用户致电http://example.com/forum/thread/example-in-an-example时,该页面将为:
Requested resource: forum, opetation: thread, value: example-in-an-example
Forum requested
阅读控制器的PHP代码,我认为这是非常自我解释的。