在子域文件夹下重写不存在的文件的URL

时间:2014-01-18 19:36:41

标签: apache .htaccess mod-rewrite url-rewriting subdomain

我的网站结构如下:

.htaccess
index.html
internal
   .htaccess
   test.html
   api.php

我在GoDaddy中设置了一个子域名,internal.ledworld-me.com映射到ledworld-me.com/internal,以下工作正常:

请求internal.ledworld-me.com/test.html正确提供test.html文件。

现在我需要以下内容:

如果请求internal.ledworld-me.com/nonexistent/file,则应将网址重写为ledworld-me.com/internal/api.php?__route__=/nonexistent/file

为了达到这个目的,我在.htaccess文件中放了什么?我应该在哪个.htaccess文件中添加代码,WebRoot下的文件或internal下的文件?

请注意,GoDaddy正在处理从internal.ledworld-me.comledworld-me.com/internal的重写。我需要我的.htaccess文件才能完成重写的第二部分,即/nonexistent/file应该被重写为api.php?__route__=/nonexistent/file

解释这个问题真的很难,而且我已经尽力了,请在需要时请求澄清。谢谢!

2 个答案:

答案 0 :(得分:0)

将此代码放入 /internal/.htaccess文件

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+?)/?$ api.php?__route__=/$1 [L,QSA]

答案 1 :(得分:0)

我的内部/ .htaccess文件中的以下文字似乎可以解决问题:

RewriteEngine on                                                                          
RewriteCond %{REQUEST_FILENAME} !-f                                                       
RewriteCond %{REQUEST_FILENAME} !-d                                                       
RewriteRule ^(.*)$ http://ledworld-me.com/internal/api.php?__route__=/$1

我仍在测试所有场景,并且在完成所有测试后确认一切正常。