【问题标题】:Url Rewriting Issue in YiiYii 中的 URL 重写问题
【发布时间】:2014-01-14 08:17:32
【问题描述】:

我想重写我的 yii 应用程序 url,我只是做了它,它在我的本地机器上运行良好。但是当我移动到服务器时它不工作并显示 500 内部服务器错误

我现在的网址是这样的

cvdb.example.com/index.php/list/index

我想改写成

cvdb.example.com/list/index

这是我在 config/main.php 中的代码

'urlManager'=>array(
                                'urlFormat'=>'path',
                                'showScriptName'=>false,
                                'caseSensitive'=>false,
                                'rules'=>array(
                                        '<controller:\w+>/<id:\d+>'=>'<controller>/view',
                                        '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
                                        '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
                                ),
                        ),

这是我的 .htaccess 代码

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\?*$ index.php/$1 [L,QSA]

当我输入 var_dumb($_SERVER) 时,我得到了什么

array(39) {
["DOCUMENT_ROOT"]=>
string(29) "/home/bridge/public_html/cvdb"
["GATEWAY_INTERFACE"]=>
string(7) "CGI/1.1"
["HTTP_ACCEPT"]=>
string(63) "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
["HTTP_ACCEPT_LANGUAGE"]=>
string(14) "en-US,en;q=0.5"
["HTTP_CONNECTION"]=>
string(5) "close"
["HTTP_COOKIE"]=>
string(339) "fbm_1=base_domain=.cvdb.example.com; PHPSESSID=a6b697793d5abf01012435cf868a2f13; 52862fa7c29cebef614e5f38c01514c2=5571bdfdfdfdfdfdfb1ed61d4cae29f6145035a37a9d4ee45e83a%3A4%3A%7Bi%3A0%3Bs%3A1%3A%221%22%3Bi%3A1%3Bs%3A13%3A%22Administrator%22%3Bi%3A2%3Bi%3A31536000%3Bi%3A3%3Ba%3A1%3A%7Bs%3A4%3A%22role%22%3Bs%3A2%3A%2210%22%3B%7D%7D"
["HTTP_HOST"]=>
string(23) "cvdb.example.com"
["HTTP_USER_AGENT"]=>
string(72) "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0"
["HTTP_X_FORWARDED_FOR"]=>
string(14) "220.336.5.3"
["HTTP_X_FORWARDED_HOST"]=>
string(23) "cvdb.example.com"
["HTTP_X_FORWARDED_SERVER"]=>
string(23) "cvdb.example.com"
["HTTP_X_REAL_IP"]=>
string(14) "220.336.5.3"
["PATH"]=>
string(13) "/bin:/usr/bin"
["PHPRC"]=>
string(13) "/home/bridge/"
["QUERY_STRING"]=>
string(0) ""
["REDIRECT_PHPRC"]=>
string(13) "/home/bridge/"
["REDIRECT_STATUS"]=>
string(3) "200"
["REDIRECT_UNIQUE_ID"]=>
string(24) "UtTWkTIfkzwAAddfdFUWCbwAAAAD"
["REDIRECT_URL"]=>
string(11) "/list/index"
["REMOTE_ADDR"]=>
string(14) "220.227.90.185"
["REMOTE_PORT"]=>
string(5) "43681"
["REQUEST_METHOD"]=>
string(3) "GET"
["REQUEST_URI"]=>
string(11) "/list/index"
["SCRIPT_FILENAME"]=>
string(39) "/home/bridge/public_html/cvdb/index.php"
["SCRIPT_NAME"]=>
string(10) "/index.php"
["SERVER_ADDR"]=>
string(12) "50.31.147.60"
["SERVER_ADMIN"]=>
string(33) "webmaster@cvdb.example.com"
["SERVER_NAME"]=>
string(23) "cvdb.example.com"
["SERVER_PORT"]=>
string(2) "80"
["SERVER_PROTOCOL"]=>
string(8) "HTTP/1.0"
["SERVER_SIGNATURE"]=>
string(0) ""
["SERVER_SOFTWARE"]=>
string(156) "Apache/2.2.25 (Unix) mod_ssl/2.2.25 OpenSSL/0.9.8e-fips-rhel5 DAV/2           mod_python/3.3.1 Python/2.4.3 mod_jk/1.2.37 mod_bwlimited/1.4 mod_perl/2.0.6 Perl/v5.8.8"
["UNIQUE_ID"]=>
string(24) "UtTWkTIfkzwAAFUWCbwAAAAD"
["ORIG_PATH_INFO"]=>
string(11) "/list/index"
["ORIG_PATH_TRANSLATED"]=>
string(39) "/home/bridge/public_html/cvdb/index.php"
["PHP_SELF"]=>
string(10) "/index.php"
["REQUEST_TIME"]=>
int(1389680273)
["argv"]=>
array(0) {
}
["argc"]=>
int(0)

}

【问题讨论】:

  • 您的应用程序是否在不重写服务器中的 url 的情况下运行?
  • 检查您的 Apache error.log 并查看错误是什么。

标签: .htaccess mod-rewrite yii


【解决方案1】:

试试这个

<ifModule mod_rewrite.c>
# Turn on the engine:
RewriteEngine on
# Don't perform redirects for files and directories that exist:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# For everything else, redirect to index.php:
RewriteRule . index.php
</ifModule>

或者只是尝试从您的 .htaccess 文件中删除这一行

RewriteBase /

【讨论】:

  • 您好,我像这样更改了 htaccess,但仍然遇到 500 内部服务器错误问题。
  • 那么问题可能出在网络访问上。检查您是否将项目放在正确的目录中并且您传递了正确的url
  • 是的,它是工作项目,因为我可以在没有此 htaccess 的情况下正确访问该站点。
  • 然后尝试使用我更新的代码更改文件,因为它对我来说很好
  • 您好,刚刚也做了这个,收到了一个错误,比如页面没有正确重定向。实际上 htaccess 和 config/main.php 在我的本地机器上为我工作,我在那里完成了 url 重写。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多