1

私は URL Rewrite の初心者であり、メニュー リンク用のこれらのページの .php 拡張子を削除する必要があります。

<ul class="nav">
      <li><a href="index.php">Home</a></li>
      <li><a href="about.php">About</a></li>
      <li><a href="services.php">Services</a></li>
      <li><a href="rates.php">Rates</a></li>
      <li><a href="contact.php#main">Contact Us</a></li>
 </ul>

.htaccess ファイルに次のコードを使用しています

<IfModule mod_rewrite.c>
  Options +FollowSymLinks
  RewriteEngine On
# Remove .php-extension from url
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME}\.php -f
  RewriteRule ^([^\.]+)/$ $1.php
# End of Apache Rewrite Rules
 </IfModule>

例えば:

localhost/websitename/index.php

ローカルホスト/ウェブサイト名/インデックス

localhost/websitename/about.php

ローカルホスト/ウェブサイト名/について

localhost/websitename/services.php

ローカルホスト/ウェブサイト名/サービス

localhost/websitename/rates.php

ローカルホスト/ウェブサイト名/料金

localhost/websitename/contact.php#main

localhost/websitename/contact-main

しかし、次の書き換えルールはこのような結果を示しています

localhost/websitename/services.php

localhost/services........... エラー: ページが見つかりません。. . . . などなど...

私が間違っていることは何ですか?この単純な URL 書き換えを実現するにはどうすればよいですか?

4

2 に答える 2

1

拡張機能を非表示.phpにするには、コードを次のように置き換えます。

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

## hide .php extension
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php[\s?] [NC]
RewriteRule ^ %1 [R=301,L]

# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/gta/$1.php -f
RewriteRule ^(.+?)/?$ /gta/$1.php [L]
于 2013-09-20T21:21:06.903 に答える