php - ZEND - 如何让它在共享主机上运行?

标签 php css .htaccess redirect zend-framework2

我必须将 Zend 网站移动到使用 Pretty URL 的共享主机上,但在添加参数时不会加载 css 文件。在移动之前,我想用服务器 ip 地址进行测试以确保。

例如
-SERVER_IP/~用户名/en(有效)
-SERVER_IP/~username/en/news(失败,因为它在“en”文件夹中搜索)

我想将每个 css 文件从路径/css/重定向到我的真实 css 文件夹,其中有很多 css 文件。

我希望每个路径/images/和/js/以及其他路径都具有相同的东西。

有人可以帮助我吗?

谢谢!


更新 1

domain.com 和 SERVER_IP/~username 之间的路径相对变化吗?当我设置/css/style.css 时,它搜索 SERVER_IP/css/style.css 而不是 SERVER_IP/~username/css/style.css。如果我能让它对两者都有效,我的问题就会消失。但我无法使用域进行测试,因为我暂时没有


更新 2

我修改了 C:\windows\system32\drivers\etc\中的主机文件以模拟真实域。如我所料,相对路径的工作方式不同。

- SERVER_IP/~username/index.php <img src="/img/world.jpg" /> => SERVER_IP/img/world.jpg (BAD, note i've lose ~username)
- www.domain.com/index.php <img src="/img/world.jpg" /> => www.domain.com/img/world.jpg (perfect)

有了这个改变,我所有的路径现在都很好,不需要重定向任何东西。但是另一个问题出现了。因为我使用 www.domain.com,index.php 显示在 URL 中,我不想要这个:www.domain.com/index.php/en


更新 3

我发现了这个规则:RewriteRule ^index.php(.*)$ http://%{HTTP_HOST}/$1 [R=301,NC,L]。 index.php 现在已删除,但是当我在 www.domain.com/en 上时,看起来 en 不在请求 uri 中,我的所有链接都移至 www.domain.com/en/en/...

我在这里粘贴我的 .htaccess 内容:

Options +FollowSymLinks
Options -Indexes
RewriteEngine on
RewriteBase /

DirectoryIndex index.php index.html

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* - [L]

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]

RewriteRule ^index.php(.*)$ http://%{HTTP_HOST}/$1 [R=301,NC,L]



更新 4

我明白了!我在下面描述了我的整个解决方案!



最佳答案

完成最终解决方案

我找到了一个解决方案,现在一切都在共享主机上运行#1。这是我的完整解决方案,我希望它能为别人节省很多时间。

1- 完整的 Zend 架构(D=目录,F=文件)

- public_html/ 
      (D) application/
      (D) data/
      (D) library/
      (D) docs/
      (D) nbproject/
      (D) public/
           (F) index.php
               ...
      (F) .htaccess

2- 删除“public/”文件夹中的基本 .htaccess 文件,并将其放在根文件夹“public_html/”(或 ../public)中

RewriteEngine On

RewriteRule ^\.htaccess$ - [F]

RewriteCond %{REQUEST_URI} =""
RewriteRule ^.*$ /public/index.php [NC,L]

RewriteCond %{REQUEST_URI} !^/public/.*$
RewriteRule ^(.*)$ /public/$1

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^.*$ - [NC,L]

RewriteRule ^public/.*$ /public/index.php [NC,L]

END !!! 这就是您要做的全部,仅此而已,没有棘手或肮脏的代码!此 .htaccess 文件解决了共享主机的 httpd.conf 文件中的 DOCUMENT_ROOT 配置问题。

重要提示
如果此时您的域没有被转发(或者您想要在将主机从一个服务器移动到另一个服务器之前进行测试(我的情况))并且您想要使用那种 URL
http 访问您的网站://SERVER_IP/~username/,是不行的。最好的解决方案是临时编辑 C:\windows\system32\drivers\etc\中的主机文件,添加如下一行:
SERVER_IP domain.com 效果很好!

关于php - ZEND - 如何让它在共享主机上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26193101/

相关文章:

php - PHP 如何创建新的 html 页面?

php - 在 php 中编写自己的 LDAP Controller

php字符串到int

html - 媒体查询没有响应

javascript - 响应轮播大小到多少个单元格

jquery - 如何为数据表中动态添加的子行添加背景颜色?

php - PHP错误.htaccess限制文件夹深度

html - 如何防止他人阅读我的 .htaccess 文件?

php - 对高度动态社交网站的基于 PHP 的搜索引擎的建议和偏好?

使用 require_once() 函数时 PHP 和 Mysql 连接错误?