php - 此 mod_rewrite 代码如何正确解析?

标签 php apache .htaccess

我的.htaccess文件如下:

Options -Multiviews
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ $1.php

它可以工作,但我想知道它是如何工作的。例如,如果我输入 example.com/main,我会在 www.example.com/main.php 获取文件。如果代码在将 www. 添加到 example.com 的开头后告诉重写停止,我如何获得 .php 扩展名?

编辑:或者我应该创建一个唯一的 ID,仅用于登录记住的用户?

最佳答案

您所询问的特定行为是因为规则

RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

是 301 重定向;它指示浏览器发起一个全新的 HTTP 请求。 L 仅导致(只能导致)它是为该请求 执行的最后一条规则;新请求带有正确的主机名并继续进行。

关于php - 此 mod_rewrite 代码如何正确解析?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11229388/

相关文章:

php - 如何根据 MySQL 数据库中的年龄过滤结果

apache - 有条件设置 X-Frame-Option

php - 当 allday 为 false 时,FullCalendar 不显示来自 JSON 事件的时间

javascript - 可以在 php 文件中调试 Javascript 吗?

jquery - 为什么在 iOS 全屏模式下运行时,jquery ajax 无法在基于 Coldfusion/Apache 的 Web 应用程序中工作?

apache - SSL 将用户重定向到 apache 上的错误网站

.htaccess - 使用 mod_rewrite 将基本 $_GET 变量重写为友好 URL

php - 使用 .htaccess 处理 404 错误

php - Blade 模板,@yield 中的@yield()

Apache + 代理 + tomcat : error - duplicated app name