Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
管理在.htaccess或PHP代码中写入的url?_Url_.htaccess_Url Rewriting - Fatal编程技术网

管理在.htaccess或PHP代码中写入的url?

管理在.htaccess或PHP代码中写入的url?,url,.htaccess,url-rewriting,Url,.htaccess,Url Rewriting,我正在研究如何在LAMP框架中重写url。我开始研究wordpress代码。我看了wordpress的.htaccess,发现: # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] <

我正在研究如何在LAMP框架中重写url。我开始研究wordpress代码。我看了wordpress的.htaccess,发现:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress
#开始WordPress
重新启动发动机
重写基/
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/index.php[L]
#结束WordPress
我既惊讶又高兴!我很惊讶,因为我没有看到任何类似正则表达式的规则。我很高兴,因为我可以推迟学习.htaccess文件的工作方式(赶在最后期限之前),使用上面的脚本并在PHP中解析$\u服务器变量以获取url数据


所以我的问题是,在.htaccess文件中管理url重写有哪些优点/缺点?在PHP代码中管理url重写的优点/缺点是什么?

在PHP中这样做将导致加载、解析和执行更多的PHP脚本/代码。如果你这样做,不要使用外部重定向进入正确的页面。请记住,PHP脚本基本上是在每次命中时编译的(尽管有操作码缓存)

mod_rewrite在这方面会更有效。它还将迫使您保持这些规则相当简单,因为mod_rewrite只能使用正则表达式(以及其他一些东西),而在PHP中,您可能会做任何事情(比如查找数据库以找到正确的页面等)。不太好

正则表达式并不难。通常情况下,这只是以下情况:

RewriteRule ^account/orders/(\w+)$ /account/orders.php?type=$1 [L]

我90%以上的重写规则都是这样的。非常基本的东西。

ModRewrite:在几乎没有不同变体时使用。如果您有许多正则表达式,服务器将感受到负载(我的经验是使用30个复杂的正则表达式)。此外,这会将您锁定到Apache(或支持此功能的其他供应商)。优点:实现起来非常简单。缺点:供应商锁定,灵活性较差


PHP:在您可能切换供应商时使用(我有在Apache中完成开发并且live系统运行lighttpd时使用的实例)。如果您想提供自定义URL重写,也可以使用此选项(我们将此选项与管理员配置屏幕一起使用,以允许客户定义自己的URL重写规则)。优点:更高的灵活性和平台独立性。缺点:它可能会占用更多的系统资源。

谢谢cletus。我尝试了你的url重写规则,它给了我不同寻常的结果。我在这里发布了一个后续问题:为什么在开发和生产之间使用不同的应用程序堆栈?那是自找麻烦。