私はyii2を学び始め、かなりのURLを試しましたが、失敗しました。私がしたこと:-
config/web.php内(以下で編集しました):
'urlManager' => [
'class' => 'yii\web\UrlManager',
// Hide index.php
'showScriptName' => false,
// Use pretty URLs
'enablePrettyUrl' => true,
'rules' => [
],
次に、.htaccess
ファイルを作成し、ルートに配置しました(以下のコードがあります):
RewriteEngine on
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward it to index.php
RewriteRule . index.php
また、Apache2.confファイルを開いて、次のように変更しました:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All <! -- instead of none -->
Require all granted
</Directory>
また、コマンドで変更を確認しました:
grep -R AllowOverride /etc/Apache2
そしてそれは以下のように表示されます:
/etc/Apache2/Apache2.conf: AllowOverride All <!-- It is showing that done -->
今:
次の方法でページにアクセスしたとき:
それが開かれ、ページのいずれかのリンクにカーソルを合わせると、次のようなものが表示されました: http:// localhost/yii2/web/site/about (これはかなりのURLのメイドを示しています)
しかし、これらのURLは機能していません(404が見つかったと言います)
以下の投稿コードも試しましたが、うまくいきませんでした:
ついに動作させました:-
1。 2つの.htaccessファイルを作成しました(1つはルートに、もう1つはアプリケーションのWebフォルダーにあります):-
root .htaccess:-
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
</IfModule>
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_URI} ^/.*
RewriteRule ^(.*)$ web/$1 [L]
RewriteCond %{REQUEST_URI} !^/web/
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ web/index.php
</IfModule>
webフォルダー.htaccess :-
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
2.config/web.phpの場合:-
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
// Your rules here
],
],
3。以下のように(Apache2.conf)で変更されました:-
<Directory /var/www/html/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
4。次に、以下のコマンドを実行します:-
a。Sudo /etc/init.d/Apache2 stop
(Apacheを停止する)
b。Sudo killall Apache2
(プロセスを強制終了し、実行中のプロセスがないことを確認するため)
c。Sudo netstat -l|grep www
(ポート80が現在使用されていないことを確認するため)
d。Sudo /etc/init.d/Apache2 restart
(Apacheを再起動)
そして今ではすべてが正常に機能しました。
ちなみに私を助けようとしたすべての人に感謝します。
参照:-
https://www.my-yii.com/forum/topic/how-to-set-up-pretty-urls-in-yii2-basic-template
https://askubuntu.com/questions/48362/how-to-enable-mod-rewrite-in-Apache
Web.phpファイルでルールを指定しないのはなぜですか?以下のように:
'urlManager' => [
'class' => 'yii\web\UrlManager',
// Disable index.php
'showScriptName' => false,
// Disable r= routes
'enablePrettyUrl' => true,
'rules' => array(
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
),
],
ここで設定したルールは一例にすぎません。URLを希望どおりに設定できます。
EDIT:それでも機能しない場合は、代わりに次のように仮想ホストを設定してみてください。
<Directory "/var/www/html/yii2/web/">
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
Allow from 127.0.0.1 localhost
</Directory>