这是我所在的地方我对CodeIgniter和general LAMP很在行,但对.htaccess不是很在行。我在用户创建设置中设置动态子域的PHP处理。我认为mydomain.com可以创建和访问user.mycomain.com,并为其提供页面。
设计是这样的。在Apache Server的文档根目录中,有一个"Users“文件夹,其中包含每个用户。
因此,理想情况下,我希望用户创建他们的帐户,然后我的PHP控制器运行,然后电源!他们的(用户).mydomain.com页面被创建。
我更改了名称服务器,以便将*.mydomain.com解析为我的静态IP。这里没有问题。
问题出在.htaccess文件中。我在StackOverflow中尝试了许多建议,但我被两件事卡住了。
这就是我到目前为止尝试过的方法,但我被卡住了。
为了澄清--
如果我转到我的文档根目录并创建了一个文件夹xxx。然后创建一个index.php文件,上面写着"it works“。我应该能够转到xxx.mydomain.com,得到一个简单的页面,上面写着"it works“
文件夹为:(Docroot)/Users/ xxx.mydomain.com域为:xxx子域为:xxx
因此,我在nushell中尝试做的是获得一个条目: xxx.mydomain.com来为位于(docroot)/Users/xxx的网站提供服务
对于大多数在线建议,它会将/Users/xxx附加到xxx.mydomain.com后面,这样url就是xxx.mydomain.com/Users.xxx,而它只需要是xxx.mydomain.com
但是浏览器中显示的网址应该始终保持xxx.mydomain.com,而不是xxx.mydomain.com/Users/subdomain (不管xxx是什么,字面上都是子域)
目前,我要么得到:
URL为xxx.mydomain.com/Users/subdomain (字面上显示为subdomain)或500服务器错误
我在不同的文章中尝试了几种不同的建议。这里有一个这样的建议。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^([a-z0-9/-]+)\.mydomain\.com$
RewriteCond ${REQUEST_URI} ^/Users/$1/
#Below Required for CodeIgniter
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L] 我想要完成的不是将/Users/xxx附加到URL。我希望重定向到基于我的(文档根目录)的/Users/xxx文件夹,同时保持xxx.mydomain.com作为URL。
非常感谢您的任何建议
发布于 2019-08-13 09:44:17
由于捕获发生在RewriteCond中,而不是RewriteRule中,因此您应该使用%1,而不是$1。从documentation
除了纯文本之外,替换字符串还可以包括
到最后匹配的
的
您还有两个没有RewriteRule的RewriteCond,这意味着要应用最后一个Rule,所有四个条件都必须匹配。
尝试以下操作:
RewriteCond %{HTTP_HOST} ^([a-z0-9-]+)\.mydomain\.com$
RewriteCond %{REQUEST_URI} !^/Users # Stop the rewrite if the URL already contains /User
RewriteRule (.*) /Users/%1/$1 [L]停止条件是必要的,因为每当URI由于重写而发生更改时,apache都会再次重新计算所有RewriteRules。你可以在here上看到这个过程是如何工作的。
https://stackoverflow.com/questions/57469812
复制相似问题