php - .htaccess 重写漂亮的 URL 而不会影响默认页面
问题描述
我有一个www.example.com
加载默认值的网站index.php page
。我也有一个login.php
我设置了这个重写规则的。
一切正常,但是当我尝试访问www.example.com
它时,它会将我重定向到login.php
.
我想在不影响默认页面的情况下保留规则。请看下文。如果有人有任何想法,那就太好了。
# ensure permalink when url rewriting was enabled (login.php?r=content/perma&id=6 => /content/perma/?id=6
RewriteCond %{QUERY_STRING} ^r=content(/|%2)perma&id=([0-9]*)$
RewriteRule ^login\.php$ %{REQUEST_URI}/content/perma/?id=%2 [R=302,L]
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
# Sets the HTTP_AUTHORIZATION header removed by apache
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .? - [L]
RewriteRule .? %{ENV:BASE}/login.php [L]
解决方案
您可以在站点根目录 .htaccess 中使用此代码:
# ensure permalink when url rewriting was enabled
# (login.php?r=content/perma&id=6 => /content/perma/?id=6
RewriteEngine On
RewriteCond %{QUERY_STRING} ^r=content(/|%2)perma&id=([0-9]*)$
RewriteRule ^login\.php$ %{REQUEST_URI}/content/perma/?id=%2 [R=302,L]
# Sets the HTTP_AUTHORIZATION header removed by apache
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . login.php [L]
推荐阅读
- c# - 有没有办法在json中搜索字符串
- python-3.x - 与多个进程共享内存中的 sqlite 的含义
- javascript - import module.fucntion 工作,但 import { function } from '../../module' 在 ReactJS 中不起作用
- tsql - 使用 SQL Server 2016 的带有嵌套 While 循环的 While 循环问题
- vue.js - Vue 动态 ref 显示下拉菜单
- octave - 从 CSV 文件在 x 轴上绘制时间戳
- python - Python 请求 - 获取服务器 IP
- merge - 通过 GitLab API 访问合并设置
- c# - 无状态库 - PermitIf 与 SetTriggerParameters 一起使用
- php - 选择标签值后如何在输入标签中显示数据?