.htaccess - .htaccess 子域重写规则不起作用
问题描述
我正在做一个网站建设者,我想让网址更漂亮。
该网址将是例如:
https://ccc-bb.example.com
=>https://example.com/project/show/ccc/bb
这是我的.htaccess文件:
<IfModule mod_rewrite.c>
RewriteEngine On
# prevents files starting with dot to be viewed by browser
RewriteRule /\.|^\.(?!well-known/) - [F]
# front controller
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\-(.*)$ https://example.com/project/show/$1/$2 [L]
当我使用上面的 ( https://ccc-bb.example.com
) 时,它会将我发送到子域空文件夹。该文件夹只有 .htaccess 文件。
我错过了什么?我从未编辑过 .htaccess 文件,谷歌也没有帮助我(或者我不知道我应该寻找什么)。
解决方案
您的点文件的第一条规则是可以的,但反过来会更好,因为第二部分只能匹配开始,但第一部分只能匹配子目录。
RewriteRule ^\.(?!well-known/)|/\. - [F]
您的另一个规则的问题是您希望它与子域匹配。RewriteRule
s 不会对您在浏览器地址栏中看到的整个字符串进行操作,仅对路径部分进行操作,并且.htaccess
由于前导目录也被剥离,因此它们看到的更少。要访问您想要的信息,请使用RewriteCond
:
RewriteCond %{HTTP_HOST} ^([^-]++)-([^-.]++)\.example\.com$
RewriteRule ^(?!project/show/).* project/show/%1/%2/$0 [L,DPI]
(\.example\.com$
如果您的主域不包含连字符,则不需要包含。)
推荐阅读
- terraform - 将 terraform 输出从一个文件传递到另一个文件
- python - Python SMTP Gmail 限制
- json - NIFI - 使用一个 ReplaceText 处理器如何在每行的开头和结尾添加括号
- mongodb - mongodb 中的 db.collections.insert() 中的无序插入如何表现
- r - R - 如何转换频率的分类变量
- python - 使用正则表达式删除确切字符串之前的所有内容
- nginx - hls 流在 nginx-rtmp-module 中不起作用
- html - 没有 在 Django 上没有
- html - CSS Flex:两列具有固定宽度,其余两列具有相对宽度
- python - 使用列表复制存储桶中的多个文件