私のubuntuコンピュータにテスト用のウェブサイトがあります。URLはmysite.testです。 http://mysite.test/goodbye.php、http://mysite.test/hello.phpなど.htaccessの.php拡張子を削除します。
は、私はまた、ワイルドカードのサブドメインがあります:私はマーケティングのページを持っているhttp://user1.mysite.test/page1.php、http://user2.mysite.test/page.1phpなど
私は「.phpの」拡張(マーケティングを追加することなく、すべてのページにアクセスになりたいのサイト、サブドメイン)。私は.htaccessファイルを変更しましたが、動作していないため、理由を特定できません。 mod_rewriteが有効になっていて、動作しています(下記の "Remove www"ルールが機能します)。
#/var/www/mysite.test/public_html/.htaccess
RewriteEngine On
#Remove www - this works
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1%{REQUEST_URI} [R=301,QSA,NC]
#Not need .php extension - this does not work
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ $1.php
最初のルール(「wwwを削除する」)を削除しても機能しなくなります。
私はhttp://mysite.test/helloに行くとき、私は404 Not Foundエラーを取得します。 http://mysite.test/hello.phpに行くだけで問題ありません。
私はhttp://user1.mysite.test/page1に行くとき、私は404 Not Foundエラーを取得します。 http://user1.mysite.test/page1.phpに行くだけで問題ありません。
私の仮想ホストファイルは以下のようになります。私は何をしないのです
#/etc/apache2/sites-available/mysite.test.conf
<VirtualHost *:80>
ServerName www.mysite.test
ServerAlias mysite.test
ServerAdmin [email protected]
DocumentRoot /var/www/mysite.test/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/mysite.test>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName wildcard.mysite.test
ServerAlias *.mysite.test
DocumentRoot /var/www/mysite.test/public_html/app
<Directory /var/www/mysite.test/public_html/app>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
?ありがとうございました。
''あなたは 'foo/bar/baz.php'に書き直すでしょう。 eディレクトリは存在しますか? –
@ marc-b '' RewriteCond%{REQUEST_FILENAME}!-d''を.htaccessファイルに追加しましたが、それでも動作しません。 –