我有一个像http://example.com/dev/testSite/
这样的网址,其中testSite的根目录在dev目录中。我将该目录设置为:
testSite
-images/
--image.png
-css/
--style.css
header.php
footer.php
index.php
page.php
我也加入了我的.htaccess:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/$ $1.php
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]
第一个问题是,而不是像http://example.com/dev/testSite/page/
那样转到page.php,而是重定向到http://example.com/page/
。最终这个网站将在http://testSite.com
生效,所以我假设这个代码能够正常运行。与此同时,我是否可以做任何快速使其在开发环境中工作?在将其移至生产环境时,我可以迅速改变的东西。
第二个问题是这也改变了文件的文件结构。例如,像<img src="images/image.png">
这样的page.php上的任何代码实际上都是在http://example.com/dev/testSite/page/images/image.png
中尝试查找此图像。我想这个.htaccess使它表现得好像我添加了目录“page”而不是隐藏扩展名。
网站上没有任何框架或任何内容,所以只需要常规的php页面。
答案 0 :(得分:1)
你的.htaccess在/dev/
子目录中应该是这样的:
RewriteEngine On
RewriteBase /dev/
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ $1/ [R=301,L]
RewriteRule ^([^/]+)/$ $1.php [L]
RewriteRule ^([^/]+)/([^/]+)/$ $1/$2.php [L]
然后要修复css / js中的相对路径,可以在页面的HTML的<head>
部分添加:
<base href="/dev/testSite/" />