2011-06-27 21 views
2

私はphpとmysqlのサイトを開発しようとしていますが、現時点では、私はPHPプログラミングに関してほとんど何も知らないが、PHPコーディングを50%行っている。今私は自分のサイトのURL構造に詰め込まれています。書く.htaccess

私のサイトのルートディレクトリは/個人用サイトをlocalhostですし、私は記事のページに行くとき、私は持っている
はlocalhost /個人用サイト/記事の.php?タイトル=任意の-記事タイトル
私はこのスラグを変更したい
localhost/mysite/article/any-article-title

私はまったく同じようなスレッドhereを見ましたが、その答えは自分のサイトに実装できません。

すべてのヘルプは高く評価されます

私は追加したいもう一つ - ??article.phpタイトルなどのすべてのファイルに対して同じことを行うにはすべてのグローバルルールがあります=またはproduct.php項目=またはcategory.php ID =

答えて

0

ここで直面している可能性のある問題は、サイトにアクセスする方法です。localhost/mysite/...これは、(他の構成パラメータ/状況に基づいて)完全に有効な書き換えルールが機能しないようにすることができます。専用ドメイン名(hostsファイルで簡単に偽装できます)を介してアクセスできるようにウェブサイトを設定することができれば、現在のhttp://localhost/mysite.com/index.phpの代わりにhttp://mysite.dev/index.phpを経由してローカルウェブサイトにアクセスできます。とにかく

- これらはルールです:

# activate rewrite engine 
RewriteEngine On 
# treat /mysite/ as a root 
RewriteBase /mysite/ 

# rewrite "localhost/mysite/article/some-title" into "localhost/mysite/article.php?title=some-title" 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule article/(.+)$ article.php?title=$1 [QSA,L] 

あなたは同様の方法で、残り(product.php?item=またはcategory.php?id=)を行うことができます。

+0

@ lazyOne非常に非常にありがとうございます。私にとって人生の節約になります。私はこの20時間以上働いています。最後に、あなたのスクリプトは私のために働いた。もう一度ありがとう! – Anuj

+0

@ lazyOne私はあなたの助けを借りていますが、この3行を説明しますか?-f RewriteCond%{REQUEST_FILENAME}!-d RewriteRule article /(.+)$ article.php? $ 1 [QSA、L]大したことではないでしょう – Anuj

+0

@Anuj最初の2行は、要求されたURLがファイルまたはディレクトリでない場合にのみ書き直しを行います(実際には '/article/'フォルダにコピーしてください)。余分なチェックが不要な場合は、それらの2行を削除することができます。最後の行は実際にApacheにどのURLをどのように書き換える必要があるかを伝えるルールです。私はこれを少し言葉で説明することはできません - いくつかの背景を持ち、このアイデアが一般的にどのように機能し、正規表現構文を少し知っている必要があります。このページで詳しく読むことができます:http://httpd.apache.org/docs/current/rewrite/ – LazyOne

-1

http://www.freewebmasterhelp.com/tutorials/htaccess/2

がどのように設定し、何が各リダイレクト

EDITのために書くことをお教えします:?私はあなたがすべてのファイル

ごとに個別に行う必要があると仮定
+1

ご返信ありがとうございます。しかし、私はまだどこにもいません。あなたは私のために正確な1行を書いてください。 – Anuj

1

このような何かトリックを行う必要があります。router.phpはあなたが唯一許可されたファイル(例えばに取り組むことを確認するためにそこにある

RewriteRule ^(.*)/(.*)$ router.php?type=$1&title=$2 [L] 

:複数のハンドラの

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^article/(.*)$ article.php?title=$1 [L] 

をこのような何かを試してみてくださいcaregory.php、product.php、article.php)、ユーザが/ config/blablablaのようなURLを使って機密ファイルにアクセスするのを防ぐことができます。

+0

@ Sergey Nesterはあなたの親切な返信に感謝しますが、まだ運はありません。 – Anuj

+0

@Anuj - あなたはmod_rewriteをインストールして実行しているのですか? また、記事/(.*)$/article.php?title=$1(/前記事.php) –

+0

@Sergey Nesterはい私は持っているかもしれません。 localhostでwampを使用していて、mod_rewriteモジュールがオンです。私はウェブ上でWordpressサイトを運営していて、localhost/wpディレクトリにもインストールされています。 mod_rewriteはうまく働いていますが、これはうまくいきません:( – Anuj