我的服务器上有一个多域设置,看起来像这样……这是结构模型:
我有两个目标:
1.) 根 .htaccess 文件应该确保我的主域是
/my-website
输入 www.my-website.com
时自动运行/执行.由于我有一个多域 ftp-server,我需要指定它。那已经在起作用了。2.) 在我的子目录
/my-website
我需要一些不同的规则,尤其是关于更好的 url 设计和 .php 扩展名的省略。/my-website
我想忽略所有.php
后缀。 /jobs
/projects
这实际上不是目录,而是 php 文件本身。 到目前为止,这就是我在此 thread 中感谢 @anubhava 所拥有的.
DocumentRoot/.htaccess:
RewriteEngine On
RewriteBase /
RewriteRule ^projects/(.+?\.php)$ /$1 [L,NC]
RewriteRule ^jobs/(.+?\.php)$ /$1 [L,NC]
RewriteRule ^(downloads/.+)/?$ assets/$1 [L,NC]
# add .php extension
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f [NC]
RewriteRule ^(.+?)/?$ $1.php [L]
RewriteCond %{REQUEST_URI} !^/my-website/
RewriteCond %{DOCUMENT_ROOT}/my-website%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/my-website%{REQUEST_URI} -d
RewriteRule ^(.*)$ /my-website/$1 [L]
/我的网站/.htaccess:
RewriteEngine On
RewriteBase /my-website/
# add .php extension
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/my-website/$1\.php -f [NC]
RewriteRule ^(.+?)/?$ $1.php [L]
但是我现在在使用这个时遇到了问题,在
my-website
中没有尾随的链接 .php
不会工作。我希望我的链接像 /projects
一样工作但运行/执行 /projects.php
在我的网站。但是,这目前不起作用,我收到了 404。我也想要
/projects/some-project
运行/执行 /some-project.php
(其中 projects
目录实际上不存在)也不起作用,也是 404。所以,总结一下。
/my-website
我希望所有链接都可以在没有尾随 .php 和这个“伪造”目录的情况下工作 所以现在这有效......
最佳答案
拥有这样的 root .htaccess:
RewriteEngine On
RewriteBase /
## COMMENT out these 2 rules
# RewriteRule ^projects/(.+?\.php)$ /$1 [L,NC]
# RewriteRule ^jobs/(.+?\.php)$ /$1 [L,NC]
RewriteRule ^(downloads/.+)/?$ assets/$1 [L,NC]
# add .php extension
RewriteCond %{DOCUMENT_ROOT}/my-website/$1\.php -f [NC]
RewriteRule ^(?:[^/]+/)?([^/]+)/?$ my-website/$1.php [L]
RewriteCond %{HTTP_HOST} ^(www\.)?my-website\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/my-website/ [NC]
RewriteRule ^(.*)$ my-website/$1 [L]
# add .php extension 2
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f [NC]
RewriteRule ^(?:[^/]+/)?([^/]+)/?$ $1.php [L]
/我的网站/.htaccess:
RewriteEngine On
RewriteBase /my-website/
# add .php extension
RewriteCond %{DOCUMENT_ROOT}/my-website/$1\.php -f [NC]
RewriteRule ^(?:[^/]+/)?([^/]+)/?$ $1.php [L]
关于apache - 多域设置上的 htaccess : other domains don't work,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27617487/