【问题标题】:.htaccess MAMP difference to live environment.htaccess MAMP 与实际环境的区别
【发布时间】:2013-04-22 16:01:44
【问题描述】:

我正在 MAMP 上构建我的网站,几天后我终于得到了一个 .htaccess 文件,可以按照我的意愿工作。但是现在当我上传到实时环境时,它的行为就不一样了!有不同的版本吗?是因为我的文件中的错误,MAMP 会自动处理吗?

如果不是这些特殊文件,则使用默认的 RewriteRule。 scripts/images/mediacontent/services/robot.txt 有效,但不能(login.php、hybridauth、blog)

#start
Options +FollowSymlinks
RewriteEngine On
RewriteBase /

# main site
RewriteCond %{REQUEST_URI} !^/scripts/(.*\.js)$
RewriteCond %{REQUEST_URI} !^/styles/(.*\.css)$
RewriteCond %{REQUEST_URI} !^/images/(.*\.jpg|.*\.png|.*\.gif)$
RewriteCond %{REQUEST_URI} !^/mediacontent/(.*\.jpg|.*\.png)$ [NC]
RewriteCond %{REQUEST_URI} !^/services/(.*\.php)$
RewriteCond %{REQUEST_URI} !^/login\.php$
RewriteCond %{REQUEST_URI} !^/hybridauth/$ 
RewriteCond %{REQUEST_URI} !^/blog/$ [NC]
RewriteCond %{REQUEST_URI} !^/robot.txt$ 

RewriteRule (\w+) index.php?page=$1 [NC,L]

【问题讨论】:

  • 对于那些不起作用的东西,我得到“302 临时移动”

标签: .htaccess mod-rewrite mamp


【解决方案1】:

使用\w+,您不会捕获完整的请求,而只会捕获其中的一部分。

来自Escape sequences

\w
任何“单词”字符

“单词”字符是任何字母或数字或下划线字符

这意味着不包括点.、斜线/、连字符- 或下划线_ 之外的任何其他特殊字符。

从看起来的条件来看,您希望从规则中排除所有现有文件和目录。您可以使用

实现相同的效果
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php?page=$0 [L]

此规则捕获完整路径,包括任何特殊字符,并将其传递给index.php。但它也排除了所有真实文件,如 Javascript 源代码、CSS 文件、图像等。

【讨论】:

  • 和我的一样,但代码少了很多:) 这个问题仍然出现在文件夹 hybridauth 和 blog 中。它与这些文件夹中的内容有关吗?博客 - 带有永久链接的 wordpress 文件夹。 hybridauth - 有一个应该捕获登录的 index.php 文件。这些文件夹和文件被忽略,我看到 /index.php?page= result
  • Going for mysite.com/blog/index.php 给我一个“500 内部服务器错误”,mysite.com/hybridauth 给我一个“302 临时移动”
  • 现在终于成功了。我删除了直播环境中的所有文件,然后再次上传。一定是第一次上传时添加的一些奇怪的东西。
【解决方案2】:

删除所有 .htaccess 文件后,我注意到问题不在重写中。

我删除了服务器上的所有文件并再次上传它,现在它可以工作了。

自我提醒:使用好的 FTP 应用程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 2022-11-13
    • 2021-10-25
    • 2016-05-21
    • 2016-02-10
    • 1970-01-01
    • 2014-07-20
    相关资源
    最近更新 更多